我正在尝试使用批处理文件在给定目录的.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运行时错误打开输入文件:找不到文件
答案 0 :(得分:2)
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=
开头的行以及在数字之间加一个点的四个数字,并将这些行替换为指定的替换字符串。