1. 程式人生 > >批處理替換文字檔案中的字串,並保留換行

批處理替換文字檔案中的字串,並保留換行

@echo on

REM --- File Name:ReplaceString.bat-----

REM ---Call Method----

REM ---ReplaceString "SrcFileName" "TargetFileName" "SrcStr" "TargetStr" ----


setlocal enabledelayedexpansion

REM ---File Name : Replace.bat ----------


REM ---Start Parse parameters--------------
REM ---All the parameters must be qualified with double quotation (")--------------


REM ---The first parameter (%1) is the source file name with file extension--------------
REM ---The second parameter (%2) is the target file name with file extension --------------
REM ---The third parameter (%3) is the string which will be replaced --------------
REM ---The fourth parameter (%4) is the string with which will be replaced --------------

set SrcFileName=%1
REM --- Remove " from string-------------------
set SrcFileName=%SrcFileName:"=%
set SrcFileName=%SrcFileName:~0,-1%

set TargetFileName=%2
REM --- Remove " from string-------------------
set TargetFileName=%TargetFileName:"=%
set TargetFileName=%TargetFileName:~0,-1%

set SrcStr=%3
REM --- Remove " from string-------------------
set SrcStr=%SrcStr:"=%
set SrcStr=%SrcStr:~0,-1%

set TargetStr=%4
REM --- Remove " from string-------------------
set TargetStr=%TargetStr:"=%
set TargetStr=%TargetStr:~0,-1%

echo ReplaceString.bat Parameters
echo "%SrcFileName%"
echo "%TargetFileName%"
echo "%SrcStr%"
echo "%TargetStr%"


REM ---End Parse parameters--------------

REM ---Replacing and wrinting Target File--------------
if exist "%TargetFileName%" (del "%TargetFileName%")

set lineStart=2

for /f "tokens=1* delims=" %%i in ('findstr /n .* "%SrcFileName%"') do (
 
    set line=%%i
   
    if "!line:~1,1!"==":" (
        if "!line:~2!"=="" (
            echo.>>"%TargetFileName%"
        ) else (
            set "line=!line:~2!" 
            set "line=!line:%SrcStr%=%TargetStr%!"  
            echo !line! >>"%TargetFileName%"
        )   
    ) else (
   
    if "!line:~2,1!"==":" (
        if "!line:~3!"=="" (
            echo.>>"%TargetFileName%"
        ) else (
            set "line=!line:~3!" 
            set "line=!line:%SrcStr%=%TargetStr%!"  
            echo !line! >>"%TargetFileName%"
        )   
    ) else (
   
        if "!line:~3,1!"==":" (
        if "!line:~4!"=="" (
            echo.>>"%TargetFileName%"
        ) else (
            set "line=!line:~4!" 
            set "line=!line:%SrcStr%=%TargetStr%!"  
            echo !line! >>"%TargetFileName%"
        )   
    )
    )
    )
)


REM ---End of BAT--------------