找到一行并使用批处理进行更改

时间:2014-01-25 09:18:39

标签: batch-file

我不擅长批处理脚本,这就是为什么我需要帮助完成这么简单的任务。

我想要做的是扫描文件,查找与特定模式匹配的行(不一定是regexp),找到它后,更改它。

我正在寻找的这条线看起来像这样:

<ApplicationVersion>1.29.586.5771</ApplicationVersion>

我想把它改成这个:

<ApplicationVersion>1.31.633.6832</ApplicationVersion>

当然,数字可能是别的。有没有一种很好的方法可以批量执行此操作而不更改文件中的任何其他内容?

2 个答案:

答案 0 :(得分:1)

安装Find And Replace Text command line utility ,然后您只需输入..

fart yourfile.txt 1.29.586.5771 1.31.633.6832

答案 1 :(得分: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