배치 파일에서 사용할 때 하나의 Powershell 명령을 여러 줄로 분할하시겠습니까?

배치 파일에서 사용할 때 하나의 Powershell 명령을 여러 줄로 분할하시겠습니까?

이 명령은 다음과 같이 명령이 배치 파일의 한 줄에 있을 때 txt 파일의 및 인스턴스를 OldText1, 로 바꾸는 데 작동합니다.OldText2OldText3NewText1NewText2NewText3

start /wait /min Powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "Get-ChildItem 'Old and New text.txt' | ForEach-Object {(Get-Content $_) -replace 'OldText1', 'NewText1' -replace 'OldText2', 'NewText2' -replace 'OldText3', 'NewText3' | Set-Content $_.FullName}"

^기호를 사용하여 명령을 분할하려고 하면 (일반적으로 배치 파일에서 작동함) 작동하지 않습니다. 예를 들어 이것은 작동하지 않으며 txt 파일에서 아무것도 대체되지 않습니다.

start /wait /min Powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "Get-ChildItem 'Old and New text.txt' | ForEach-Object {(Get-Content $_) ^
-replace 'OldText1', 'NewText1' ^
-replace 'OldText2', 'NewText2' ^
-replace 'OldText3', 'NewText3' ^
| Set-Content $_.FullName}"

백틱을 사용해도 작동하지 않습니다(하지만 PS1 스크립트가 아니기 때문에 작동하지 않습니다).

start /wait /min Powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "Get-ChildItem 'Old and New text.txt' | ForEach-Object {(Get-Content $_) `
-replace 'OldText1', 'NewText1' `
-replace 'OldText2', 'NewText2' `
-replace 'OldText3', 'NewText3' `
| Set-Content $_.FullName}"

오전 내내 채팅봇에 대해 물어봤는데 작동하는 항목이 하나도 없습니다. 절반의 시간 동안 다시 한 줄에 명령을 계속 입력하고 나는 그 명령을 사용하여 원을 그리며 돌아다닙니다.

내가 하려는 일이 불가능할까요?

명령을 여러 줄로 분할하려는 이유는 단순히 거대한 명령을 수평으로 볼 필요 없이(결국 무엇이 될지) 대체되는 내용을 읽을 수 있기를 원하기 때문입니다. 이보다 훨씬 더 많은 대체 명령을 추가하려고 하는데 세 개의 대체 명령에도 작동하지 않습니다... 아직은요!

왜 이것이 작동하지 않는지 아는 사람에게 미리 감사드립니다.

답변1

이것은 나에게 명확하지 않습니다.

Get-ChildItem 'Old and New text.txt' | ForEach-Object {(Get-Content $_)

이 부분에서는 폴더의 항목, 정확하게는 파일 항목을 가져오겠다고 제안하지만 즉시 명령은 문자열 교체가 콘텐츠에서 바로 수행되는 파일을 정의합니다.

해당 부품을 제거하면 예상대로 교체품이 나왔지만 동일한 교체품에 대한 여러 파일에 대한 것이라면 질문을 편집하는 것이 좋습니다. 혼란스럽기는 하지만 콘텐츠 처리에는 " "가 필요하지 않으며 Get-ChildItem 'Old and New text.txt' | ...직접 사용할 수 있습니다.Get-Content 'Old and New text.txt' ^|...

start "Start PS1/CMD" /wait /min PowerShell.exe -c  ^
"$Strings=Get-Content 'Old And New Text.txt' ^| %%  ^
   ^{ $_ -replace('OldText1','NewText1')^
         -replace('OldText2','NewText2')^
         -replace('OldText3','NewText3')^}^
  ; sc 'Old And New Text.txt' -Value $Strings -Force"

관련 정보