BAT:檔案中替換字元(保留空格和換行)
阿新 • • 發佈:2018-12-23
1 @echo off 2 rem CMD:"color --help" 3 :: setting color:back white,content blue 4 color f9 5 6 ::old string and replace string 7 set old_str=ip 8 set new_str=#ip 9 10 :FILE 11 set "souerce_path=D:\xxx\bat\my_test.txt" 12 for /f "tokens=1* delims=:" %%i in ('findstr /n .* "%souerce_path%"') do( 13 set "lineContent=%%j" 14 ::echo ==%%j== 15 setlocal EnableDelayedExpansion 16 if not "!lineContent!"=="" set "lineContent=!lineContent:%old_str%=%new_str%!" 17 >>"temp.txt" echo.!lineContent! 18 endlocal 19 ) 20 move /y temp.txt "%souerce_path%" 21 goto END 22 23 :PATH24 ::files path 25 set "souerce_path=D:/xxx/bat" 26 cd /d "%souerce_path%" 27 28 :: dir /s /b /a-d *.txt ::get all current and sub path file name with post .txt 29 for /f "delims=" %%a in ('dir /s /b /a-d *.txt') do ( 30 for /f "tokens=1* delims=:" %%i in ('findstr /n .* "%%a"') do ( 31 set "lineContent=%%j" 32 ::echo ==%%j== 33 ::here use "setlocal EnableDelayedExpansion" to keep content "!" 34 setlocal EnableDelayedExpansion 35 if not "!lineContent!"=="" set "lineContent=!lineContent:%old_str%=%new_str%!" 36 >>"%%~dpnxas" echo.!lineContent! 37 endlocal 38 ) 39 del /s /q /f "%%a" >nul 40 ren *.txts *.txt 41 ) 42 :END 43 echo ---------ok---------- 44 pause>nul