在目录中以递归方式搜索Powershell并替换单词列表,然后在路径中复制粘贴文件

时间:2015-01-13 08:10:06

标签: powershell replace find

对于powershell来说,我是无能为力的,我最终还是需要研究一下,但是现在我 需要一些帮助。 我想要实现的目标。 我有一个单词列表

  • 查找 ReplaceWith :some_thing
  • 查找:lifeSpan ReplaceWith :life_span
  • 查找:myWorld ReplaceWith :my_world

我需要递归地查找并替换目录中XML文件中的这些单词列表。 对于每个文件,我需要找到并替换这些单词,然后将其移动到文件夹中。

提前致谢

链接到学习Powershell欢迎的良好起点。

1 个答案:

答案 0 :(得分:1)

从此开始并根据您的需求进行调整

$changeTable = @{
'something' = 'some_thing' 
'lifeSpan' = 'life_span' 
'myWorld' = 'my_world' 
}

$startDirectory = "c:\"

$fileList = Get-ChildItem -Path $startDirectory -Recurse -File
foreach ($file in $fileList)
{
    (Get-Content -Path $file.FullName) | ForEach-Object { 
        $currentLine = $_

        $changeTable.GetEnumerator() | ForEach-Object {
            $currentLine = $currentLine -replace $_.Key, $_.Value
        }

       $currentLine
    } | Set-Content -Path $file.FullName
}

该脚本首先从$ startDirectory中检索所有文件(递归)。然后它迭代文件并替换上面更改表中的单词。要将文件移动到其他位置,请查看Move-Item cmdlet。