2014-01-25 15 views
0

我不擅長批量腳本編寫,這就是爲什麼我需要幫助完成像這樣簡單的任務。找到一條線,並使用批量更改

我想要做的就是掃描一個文件,尋找一個匹配特定模式的行(不必是正則表達式),當它被發現時,改變它。

我正在尋找看起來像這樣一行:

<ApplicationVersion>1.29.586.5771</ApplicationVersion>

而且我想把它改成這樣:

<ApplicationVersion>1.31.633.6832</ApplicationVersion>

當然,這個數字可能是一些其他。有沒有一個很好的方式批量做到這一點,而不改變文件中的其他任何東西?

+0

你能使用正則表達式工具,還是你的意思是你不想要正則表達式? – foxidrive

+0

[This](http://stackoverflow.com/questions/20979763/how-to-replace-strings-in-windows-batch-file/20984141#2098414)應該很容易編輯,做你喜歡的事情。讓我知道你需要一隻手。 – unclemeat

+0

可能的重複[如何使用Windows命令行環境查找和替換文件中的文本?](http://stackoverflow.com/questions/60034/how-can-you-find-and-replace-text -in-A-文件使用最窗口的命令行-ENVIR) – dbenham

回答

0

這對你的作品,也將保留在你的輸入文件中的空行.....

@Echo OFF 

REM Set These Variables 
SET "InFile=InputFile.txt" 
SET "OutFile=Outputfile.txt" 
SET "Replace=1.29.586.5771" 
SET "ReplaceWith=1.31.633.6832" 

REM Get Total Lines Number [including empty lines] 
FOR /F %%A IN ('TYPE "%InFile%"^|find /v /c ""') DO SET "Till=%%A" 

REM Create The OutputFile with changes 
SETLOCAL EnableDelayedExpansion 
<"!InFile!" (
FOR /L %%a IN (1 1 0) DO SET /p "=" 
FOR /L %%A IN (1 1 %Till%) DO (
SET "line=" 
SET /P "line=" 
IF "!line!x" == "x" (Echo. 
) ELSE (Echo !line:%Replace%=%ReplaceWith%!) 
) 
)>>"%OutFile%" 
ENDLOCAL