【问题标题】:How to replace a word in every CFG file of a folder with the CFG file name?如何用CFG文件名替换文件夹的每个CFG文件中的单词?
【发布时间】:2018-06-23 05:33:07
【问题描述】:

我想知道批处理或脚本是否有可能通过将其替换为 CFG 文件的名称来更改多个 *.cfg 文件中始终为同一个单词的单词?

例如在这些 *.cfg 文件中

aaaaaa.cfg
bbbbbb.cfg
cccccc.cfg
...

我在每个 CFG 文件的第 4 行总是有 kof98 这个词。我想将单词kof98 替换为aaaaaa,而不像第一个CFG 文件的文件名那样扩展。并通过将kof98 替换为bbbbbb 等对第二个CFG 文件进行相同操作。

【问题讨论】:

    标签: file batch-file replace


    【解决方案1】:

    使用 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 来区分大小写-sensitive 将任何出现的kof98 替换为不带文件扩展名的CFG 文件的名称。

    要了解所使用的命令及其工作原理,请打开命令提示符窗口,在其中执行以下命令,并仔细阅读每个命令显示的所有帮助页面。

    • call /? ... 还解释了 %~dp0 ... 参数 0 的驱动器和路径是批处理文件本身。
    • echo /?
    • for /?
    • goto /?
    • if /?
    • jrepl.bat /?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-18
      • 2014-03-27
      • 2019-11-03
      • 1970-01-01
      • 2013-06-21
      • 2018-04-10
      • 1970-01-01
      • 2012-09-07
      相关资源
      最近更新 更多