如何编写.bat/.cmd/.vbs脚本实现文本文件正则搜索替换功能
完整可运行VBS实现
Set objFS = CreateObject("Scripting.FileSystemObject") ' 请修改为你的目标文本文件路径 strFile = "E:\imglist_2.txt" Set objFile = objFS.OpenTextFile(strFile) ' 初始化正则匹配对象 Set objRegEx = New RegExp objRegEx.Global = True objRegEx.IgnoreCase = False Do Until objFile.AtEndOfStream strLine = objFile.ReadLine ' 步骤1:删除所有双引号 strLine = Replace(strLine, """", "") ' 步骤2:正则删除web字符串之前的全部内容 objRegEx.Pattern = ".+(?=web)" strLine = objRegEx.Replace(strLine, "") ' 步骤3:替换web\前缀为完整路径 strLine = Replace(strLine, "web\", "E:\K4_XML_Export\tpx_K4toWP_ImageMagick\web\") WScript.Echo strLine Loop
使用方法
将上述代码保存为process.vbs,打开cmd窗口执行以下命令即可得到处理后的文件:
:: 生成处理后的新文件 cscript /nologo E:\process.vbs > new_imglist.txt :: 如确认结果正确需要覆盖原文件,可执行以下命令 :: move /y new_imglist.txt E:\imglist_2.txt
实现思路
- 直接使用Windows系统原生支持的VBS内置正则对象,无需安装额外工具,兼容性强
- 逐行读取文本内容,按要求的顺序执行三次替换操作,固定字符串替换用原生
Replace方法效率更高,需要正则匹配的场景才调用正则对象执行替换 - 最终通过cscript的输出重定向生成新文件,避免直接修改原文件出现数据丢失的问题
注意事项
- 运行脚本前建议先备份原文本文件,避免操作失误丢失原始内容
- VBS字符串中
"需要用两个""转义表示,路径中的\不需要额外转义,正则规则中的\才需要双写转义 - 如果你的文本文件是无BOM的UTF-8格式,默认读取可能出现乱码,建议先将文件转存为ANSI格式,该格式对纯英文、数字、路径内容完全兼容
- 如果需要修改匹配规则,只需要调整对应
objRegEx.Pattern的正则表达式即可
内容的提问来源于stack exchange,提问作者Noel Bügler
相关产品推荐
相关产品推荐

