替换多个文件中的文本-出现重复错误

替换多个文件中的文本-出现重复错误

我想循环遍历当前文件夹中的所有文件(此测试为 2 个)并替换文本。

替换有效,但文件 1 中只剩下新文件 1 和新文件 2,文件 2 中也剩下相同的文件。我只想要文件 1 中的新文件 1 和文件 2 中的新文件 2。

假设我的 ForEach-Object 位于错误的位置但无法修复。有什么建议吗?

@echo off
call:DoReplace "a1" "a2" *.txt "a3" "a4" 
exit /b

:DoReplace
echo ^(Get-Content "%3"^) ^| ForEach-Object { $_ -replace %1, %2 -replace %4, %5} ^| Set-Content %3>Rep.ps1 
Powershell.exe -executionpolicy ByPass -File Rep.ps1
if exist Rep.ps1 del Rep.ps1
echo Done
pause

答案1

这并不漂亮,但它有效:

Get-ChildItem \\path\to\folder -Filter '*.txt' | foreach {
$text = Get-Content $_.FullName
$text = $text -replace 'a2','test'
$text = $text -replace 'a4','foo'
$text | Set-Content $_.FullName
}

您的脚本的问题在于您需要Set-Content循环ForEach-Object

相关内容