Batch file 找到一行并使用批处理更改它

Batch file 找到一行并使用批处理更改它,batch-file,Batch File,我不太擅长批处理脚本,这就是为什么我需要帮助完成如此简单的任务的原因 我想做的是扫描一个文件,查找与特定模式匹配的行(不需要是regexp),找到后,更改它 我要找的线路如下所示: 1.29.586.5771 我想把它改成这样: 1.31.633.6832 当然,数字可能是其他的。是否有一种在不更改文件中任何其他内容的情况下批量执行此操作的好方法?安装,然后只需输入 fart yourfile.txt 1.29.586.5771 1.31.633.6832 这适用于您,并且还将保留输入文件中的

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

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

我要找的线路如下所示:

1.29.586.5771

我想把它改成这样:

1.31.633.6832

当然,数字可能是其他的。是否有一种在不更改文件中任何其他内容的情况下批量执行此操作的好方法?

安装,然后只需输入

fart yourfile.txt 1.29.586.5771 1.31.633.6832

这适用于您,并且还将保留输入文件中的空行

@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
@Echo关闭
REM设置这些变量
设置“infle=InputFile.txt”
设置“OutFile=Outputfile.txt”
设置“替换=1.29.586.5771”
设置“替换为=1.31.633.6832”
REM获取总行数[包括空行]
对于中的/F%%A('TYPE”%infle%%“^ | find/v/c”“),请设置“Till=%%A”
REM创建带有更改的输出文件
SETLOCAL EnableDelayedExpansion
>“%OutFile%”
端部

您可以使用regexp工具吗,还是说您不需要regexp?应该很容易编辑,做你喜欢的。让我知道你需要帮助。可能的副本