답변:
타사 유틸리티를 설치할 수있는 경우 Gnu sed 는 이러한 유형의 작업에 맞게 제작되었습니다. 이 링크는 Sourceforge에서 호스팅되는 Windows 버전을 가리키며 다운로드하여 설치할 수 있습니다. 이것은 프롬프트의 구문입니다.
for %i in (*.txt) do sed -i "s/1 setlinewidth/10 setlinewidth/g" %i
참고 :-i
sed 옵션을 사용하면 문제의 파일을 덮어 쓰므로 문제가 발생할 경우를 대비하여 쉽게 사용할 수있는 백업이 있는지 확인하십시오.
sed 유틸리티를 설치할 수 없으면 내장 배치 언어 만 사용하면 훨씬 더 어려워집니다.
편집 : 외부 도구없이 교체를 수행 할 작은 배치 파일을 모았습니다. foo.cmd
원하는 이름 또는 다른 이름 으로 저장하고 다음과 같이 명령 행에서 호출하십시오.foo.cmd
주의 사항 : 이것은 귀하의 질문에 나오는 예에서 매우 구체적으로 작성되었습니다. 이전 / 이후 행의 시작 또는 끝에 다른 텍스트 나 추가 공백 1 setlinewidth
이 있으면이 배치 파일이 작동하지 않습니다. 또한 원본 텍스트 파일의 복사본을 .bak 확장자 (예 : textfile.txt.bak)로 저장합니다.
@echo off
setlocal ENABLEEXTENSIONS
setlocal ENABLEDELAYEDEXPANSION
for %%a in (*.txt) do (
echo Processing %%a...
for /f "delims=^ tokens=1" %%i in (%%a) do (
if /i "%%i"=="1 setlinewidth" (
echo 10 setlinewidth>>%%a.new
) else (
echo %%i>>%%a.new
)
)
move /y %%a %%a.bak > nul
ren %%a.new %%a
)
Powershell에는 외부 소프트웨어 나 유틸리티를 다운로드하지 않고도이 문제를 해결하는 유틸리티가 있습니다. Scripting Guy 가이 기사 를 확인하십시오 . 정말 좋습니다. 또한 Set-Content 설명서를 살펴보십시오 .
예:
(Get-Content C:\Scripts\Test.txt) |
Foreach-Object {$_ -replace "oldString", "newString"} |
Set-Content C:\Scripts\Test.txt