用批处理文件替换ini文件的内容

时间:2019-01-21 14:36:42

标签: batch-file replace

我正在尝试使用批处理文件在给定目录的.ini文件中查找IP地址,并将其更改为新地址。我正在起诉this问题作为来源。

脚本运行无错误,但是它创建的替换文件为空,并且也是.bat文件(而不是.ini文件)。

脚本:

scale_fill_manual

rpl命令来自一个辅助文件,其来源为here

testIPCOnfig.ini文件的内容:

  

ipaddress = 193.129.187.44

感谢任何反馈。

使用已更新的JREPL HELPER的已更新脚本:

set "file=M:\Haem\C.Mooney\cmooney\apex\Scripts\testIPCOnfig.ini"

:loop
findstr "^ipaddress=193.120.187.44$" "%file%" >nul || (
type "%file%" | repl "^ipaddress=193.120.187.44=.*" "ipaddress=193.120.187.110" >"%file%.tmp"
move "%file%.tmp" "%file%" >nul
)
ping -n 120 localhost >nul
goto :loop

testIPCOnfig.txt的内容:

  

ipaddress = 193.120.187.44

返回以下错误:

  

JScript运行时错误打开输入文件:找不到文件

1 个答案:

答案 0 :(得分:2)

Dave Benham 编写的

REPL.BAT 已弃用,并由 Dave Benham 编写的JREPL.BAT代替,这是一个批处理文件/ JScript混合,以使用JScript在文件上运行正则表达式替换。

@echo off
if not exist "%~dp0jrepl.bat" goto :EOF
if not exist "M:\Haem\C.Mooney\cmooney\apex\Scripts\testIPCOnfig.ini" goto :EOF

call "%~dp0jrepl.bat" "^ipaddress=\d+\.\d+\.\d+\.\d+" "ipaddress=193.120.187.110" /F "M:\Haem\C.Mooney\cmooney\apex\Scripts\testIPCOnfig.ini" /O -

批处理文件 JREPL.BAT 必须与具有上述代码的批处理文件存储在同一目录中。因此,批处理文件首先检查 JREPL.BAT 是否确实存在于批处理文件的目录中,如果此条件不成立,则退出。

然后,批处理文件检查INI文件是否存在以进行修改,如果该文件根本不存在,则退出。参见Where does GOTO :EOF return to?

然后调用 JREPL.BAT 来搜索以ipaddress=开头的行以及在数字之间加一个点的四个数字,并将这些行替换为指定的替换字符串。