이 스크립트를 대체하여 줄 바꿈을 어떻게 삽입합니까?


3

텍스트를 바꿀 수있는 배치 스크립트가 있으며 원본 아래에 줄 바꿈 텍스트가 오는 문자열을 바꾸고 싶습니다. 예를 들면 다음과 같습니다.

전에:

Old string

후:

New
String

배치에 사용되는 많은 줄 바꿈 명령을 시도했지만 (일부는 Stack Exchange 사이트에 있음) 작동하지 않습니다. 스크립트의 구문 때문이라고 생각합니다. 내가 작업하고있는 스크립트는 다음과 같습니다.

@echo off
setlocal enableextensions disabledelayedexpansion

set search=Old string
set replace=New string
set textFile=Test.txt

:PowerShell
SET PSScript=%temp%\~tmpStrRplc.ps1
ECHO (Get-Content "%~dp0%textFile%").replace("%search%", "%replace%") ^| Set-Content "%~dp0%textFile%">"%PSScript%"

SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"
EXIT

스크립트에 줄 바꿈 "주입"을 어떻게 구현할 수 있습니까?


좋을 것 같습니다. 스크립트를 좀 더 작업하고 필요할 때 새 질문을 게시 할 것입니다.
Mr. Mendelli

걱정하지 마십시오. 문제를 해결하기 위해 더 자세한 정보가 필요하며 원래 질문의 범위를 벗어나는 새로운 질문에 더 적합한 것으로 보입니다. 간단한 주석 공간에서 설명 한 것처럼 나에게 분명한 것처럼 들리지 않으므로 오류, 경로 예제, 스크립트를 사용하는 현명한 논리 등 문제가있는 등 매우 자세한 내용이 있습니다. 도움이되며 훨씬 더 자세한 정보가 필요하면 새로운 질문이 될 수도 있습니다.
Pimp Juice IT

답변:


3

당신은 넣을 수 있습니다 여기에 이미지 설명을 입력하십시오당신은 줄 바꿈을 원하는 대체 문자열 사이의 공간 대신에 ( CRLF) 예상에서 그 결과 얻을 배치하는 역 따옴표 "R"역음 "n"을 (아래 참조).

기존 스크립트를 한 번만 변경하면 설명 및 예제 출력 결과에 따라 예상대로 작동합니다.


스크립트

@echo off
setlocal enableextensions disabledelayedexpansion

set search=Old string
set replace=New`r`nstring
set textFile=Test.txt

:PowerShell
SET PSScript=%temp%\~tmpStrRplc.ps1
ECHO (Get-Content "%~dp0%textFile%").replace("%search%", "%replace%") ^| Set-Content "%~dp0%textFile%">"%PSScript%"

SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"
PAUSE
EXIT

참고 : 필요에 따라 줄 바꿈이있는 새 문자열에 후행 또는 선행 공백이 없도록 변수에 두 문자열 사이에 공백을 두지 마십시오 replace=.

여기에 이미지 설명을 입력하십시오


결과

전에

Old string

New
String

추가 자료


답변 주셔서 감사합니다. 이것은 효과 있지만 더 간단한 텍스트 문서에서만 그렇게하는 것처럼 보입니다. 작업중 인 문서가 더 복잡합니다. 더 복잡한 방법으로 메서드 가이 오류를 반환합니다 You cannot call a method on a null-valued expression.. 문서의 유일한 현재 내용 일 때 문자열을 성공적으로 바꿨습니다. 이것이 왜 그런지에 대한 아이디어가 있습니까?
Mr. Mendelli

@ Mr.Mendelli 작은 샘플 파일 내용 으로이 오류를 현명하게 테스트하고 테스트 할 무언가를 제공 할 수있는 방법이 있습니까? 작업하고있는 내용이나이 문제가있는 것보다 작은 것을 테스트 할 수 있다면 아마 알아낼 수있을 것입니다. 알려주세요.
Pimp Juice IT

@ Mr.Mendelli-의견과 함께 역행 문제를 알아 냈으므로 업데이트 된 설명에 따라 예상 결과를 얻는 데 set search=;-------- MSI Parameters ----------사용 set replace=;-------- MSI Parameters ----------`r`n.ShowSB=0하십시오. 스크립트 예 : i.imgur.com/yEXNsI8.png 및 출력 예 : i.imgur.com/q451qtb.png
Pimp Juice IT
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.