使用windows递归地替换文件中的文本



我可以这样修改文件中的文本:

(gc file.name) -replace 'Foo', 'Bar' | sc file.name

现在我想对这个目录中的每个文件都这样做。在DOS中,我会这样做:

for %f in (*.*) do (gc %f) -replace 'Foo', 'Bar' | sc %f

我得到一个有用的消息,告诉我语法是错误的,但它没有告诉我正确的语法是什么。我打赌这里有人能。

您只需要Get-ChildItem来获取目录中的文件和您选择的循环,在本例中是ForEach-Object

Get-ChildItem pathtotargetDirectory -File | ForEach-Object {
(Get-Content -LiteralPath $_.FullName -Raw) -replace 'Foo', 'Bar' |
Set-Content $_.FullName
}

如果你想对targetDirectory下的所有文件递归地执行,你只需包含-Recurse

我用过:

foreach ($F in dir){ (gc $F) -replace 'Foo', 'Bar' | sc $F }

相关内容

  • 没有找到相关文章

最新更新