여러 파일의 텍스트 바꾸기 - 중복 오류 발생

여러 파일의 텍스트 바꾸기 - 중복 오류 발생

현재 폴더의 모든 파일(이 테스트의 경우 2개)을 반복하고 텍스트를 바꾸고 싶습니다.

대체 작업은 작동하지만 file1에는 newfile1과 newfile2가 남고 파일 2에는 동일하게 남습니다. 여기서는 파일 1에 newfile 1을, 파일 2에 newfile 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.

관련 정보