我想知道批处理或脚本是否有可能通过将其替换为CFG文件的名称来更改多个* .cfg文件中的单词总是相同的单词?
例如,在这些* .cfg文件中
aaaaaa.cfg
bbbbbb.cfg
cccccc.cfg
...
我在每个CFG文件的第4行总是有kof98
这个词。我希望将kof98
替换为aaaaaa
,而不使用扩展名,例如第一个CFG文件的文件名。通过将kof98
替换为bbbbbb
等,为第二个CFG文件添加相同内容。
答案 0 :(得分:0)
这是一个易于实现的任务,使用 Dave Benham 编写的JREPL.BAT,这是一个批处理文件/ JScript混合使用JScript在文件上运行正则表达式替换。
@echo off
if not exist "*.cfg" goto :EOF
if not exist "%~dp0jrepl.bat" goto :EOF
for %%I in (*.cfg) do call "%~dp0jrepl.bat" "kof98" "%%~nI" /F "%%I" /O -
批处理文件首先检查当前目录中是否有* .cfg文件,如果此条件不成立则立即退出,请参阅Where does GOTO :EOF return to?
批处理文件 JREPL.BAT 必须与包含上述代码的批处理文件存储在同一目录中。因此,如果 JREPL.BAT 确实存在于批处理文件的目录中,则批处理文件会检查,如果此条件不为真,则退出。
命令 FOR 在当前目录中搜索与通配符模式*.cfg
匹配的非隐藏文件,并为每个找到的CFG文件调用批处理文件 JREPL.BAT 区分大小写,用CFG文件的名称替换kof98
的任何出现,而没有文件扩展名。
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
call /?
...还解释了%~dp0
...参数0的驱动器和路径是批处理文件本身。echo /?
for /?
goto /?
if /?
jrepl.bat /?