我想在几个文本文件中进行查找/替换。如何使用.BAT自动化? (我还需要正则表达式)
示例:查找:
<ObjectList ObjectType="MyObject">
(anything here)
</ObjectList>
然后删除此文本并替换为:
<ObjectList ObjectType="MyNewObject">
Blablabla
Blablabla
</ObjectList>
如何使用.BAT脚本执行此操作?
编辑:我有很多要查找/替换的文件,其中一些不是XML。所以我需要一个通用的解决方案......最简单的方法是什么(我不想安装第三方软件)。 VBS或BATCH? 如果某人有一个非常小的示例代码,请提前多多感谢! 谢谢!答案 0 :(得分:4)
通过VBScript的VBScript.RegExp类使用正则表达式。
例如:
@ECHO OFF
(
ECHO Set Regex = CreateObject^("VBScript.RegExp"^)
ECHO Regex.Pattern = "[E-G]$"
ECHO MsgBox^(Regex.Replace^("A B C D E", "X"^)^)
) > Regex.vbs
CSCRIPT //NOLOGO Regex.vbs
DEL Regex.vbs
PAUSE > NUL
上面的代码会显示消息&#34; A B C D X&#34;。
我希望我有所帮助。
答案 1 :(得分:1)
由于您正在操作XML,我会使用特定于XML的内容来维护编码,实体等。
查看XMLStarlet以获取基于命令行的XML工具集,特别是ed
命令,它允许您编辑文档。
xml ed --help
XMLStarlet Toolkit: Edit XML document(s)
Usage: xml ed <global-options> {<action>} [ <xml-file-or-uri> ... ]
where
<global-options> - global options for editing
<xml-file-or-uri> - input XML document file name/uri (stdin is used if missing)
<global-options> are:
-P (or --pf) - preserve original formatting
-S (or --ps) - preserve non-significant spaces
-O (or --omit-decl) - omit XML declaration (<?xml ...?>)
-N <name>=<value> - predefine namespaces (name without 'xmlns:')
ex: xsql=urn:oracle-xsql
Multiple -N options are allowed.
-N options must be last global options.
--help or -h - display help
where <action>
-d or --delete <xpath>
-i or --insert <xpath> -t (--type) elem|text|attr -n <name> -v (--value) <value>
-a or --append <xpath> -t (--type) elem|text|attr -n <name> -v (--value) <value>
-s or --subnode <xpath> -t (--type) elem|text|attr -n <name> -v (--value) <value>
-m or --move <xpath1> <xpath2>
-r or --rename <xpath1> -v <new-name>
-u or --update <xpath> -v (--value) <value>
-x (--expr) <xpath> (-x is not implemented yet)