我可以这样修改文件中的文本:
(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 }