![Windows CMD를 사용하여 디렉토리 및 해당 하위 디렉토리 내의 여러 HTML 파일에서 문자열을 검색하고 바꾸는 방법은 무엇입니까?](https://rvso.com/image/1520725/Windows%20CMD%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%20%EB%B0%8F%20%ED%95%B4%EB%8B%B9%20%ED%95%98%EC%9C%84%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%20%EB%82%B4%EC%9D%98%20%EC%97%AC%EB%9F%AC%20HTML%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EA%B2%80%EC%83%89%ED%95%98%EA%B3%A0%20%EB%B0%94%EA%BE%B8%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
이 요구 사항은 다음과 유사합니다.Windows CMD를 사용하여 디렉터리 내 여러 텍스트 파일의 문자열을 검색하고 바꾸는 방법은 무엇입니까? 2 부
폴더와 해당 하위 폴더 내의 모든 HTML 파일에 대해 찾기 및 바꾸기를 수행하고 싶습니다.
여기서는 2개의 입력을 사용하고 있는데 그 중 하나는 파일 경로이고 다른 하나는 어떤 이유로 해당 파일 경로의 폴더 이름입니다.
set /p INPUT1= Enter Source file path:
set /p INPUT2= Enter Source folder name (**Without any Space**):
Here let's assume (below folders can change):
INPUT1= D:\!Test\
INPUT2= Folder1
Then path is D:\!Test\Folder1\
Inside Folder1 there are some more folders like:
....Folder1\A\Common\
....Folder1\B\Common\
....Folder1\C\Common\
In above folder **A** as well as folder **Common** have html files.
I have coded this in .cmd file as below:
set /p INPUT1= Enter Source file path:
set /p INPUT2= Enter Source folder name (**Without any Space**):
REM 폴더에서 FindTextX.html 텍스트를 InstallTextA.html로 바꿉니다.ㅏ, 폴더의 TextB.html 바꾸기비, 폴더의 TextC.html 바꾸기씨.
"OldStringA=FindTextX.html" 설정 "NewStringA=ReplaceTextA.html" 설정 "NewStringB=ReplaceTextB.html" 설정 "NewStringC=ReplaceTextC.html" 설정
@ECHO OFF &SETLOCAL
cd %INPUT1%\%INPUT2%\A\
for %%x in (*.html) do call:process "%%~x"
goto:eof
:process
set "outFile=%~n1%~x1"
(for /f "skip=2 delims=" %%a in ('find /n /v "" "%~1"') do (
set "ln=%%a"
Setlocal enableDelayedExpansion
set "ln=!ln:*]=!"
if defined ln (
set "ln=!ln:%OldStringA%=%NewStringA%!"
)
echo(!ln!
endlocal
))>"%outFile%"
REM exit /b
REM Come out of A folder
cd..
REM Go inside of B folder
cd B
for %%x in (*.html) do call:process1 "%%~x"
goto:eof
:process1
set "outFile=%~n1%~x1"
(for /f "skip=2 delims=" %%a in ('find /n /v "" "%~1"') do (
set "ln=%%a"
Setlocal enableDelayedExpansion
set "ln=!ln:*]=!"
if defined ln (
set "ln=!ln:%OldStringB%=%NewStringB%!"
)
echo(!ln!
endlocal
))>"%outFile%"
.......So on for folder **C** .....
exit /b
그러나 이것은 작동하지 않습니다. 폴더 안에 빈 HTML 파일이 있습니다.ㅏ,비&씨. 그러나 하위 폴더에서는 작동하지 않습니다.흔한각 A, B 및 C 폴더 안에 있습니다. 이 스크립트를 사용하여 폴더 아래 HTML 파일의 텍스트를 대체하고 싶습니다.ㅏ,비그리고씨그리고 그 안의 텍스트도하위 폴더. 참고: FART, REPLACER, .... 등과 같은 추가 BAT 파일을 원하지 않습니다. 귀하의 도움에 감사드립니다.