以下是一个XML示例:我需要在所有地方更换D74DVP1请帮帮我?我只能替换第一个节点中的单词。
<?xml version="1.0"?>
<Forest>
<Domain>
<!-- PartitionType:Application -->
<Guid>01706323-d9a7-4f8d-90d0-1bfb7c88d1d0</Guid>
<DNSname>ForestDnsZones.D74DVP1.local</DNSname>
<NetBiosName></NetBiosName>
<DcName></DcName>
</Domain>
<Domain>
<!-- PartitionType:Application -->
<Guid>5aca253d-4f3f-475b-b76e-13cd3c694570</Guid>
<DNSname>ForestDnsZones.D74DVP1.local</DNSname>
<NetBiosName></NetBiosName>
<DcName></DcName>
</Domain>
<Domain>
<!-- ForestRoot -->
<Guid>87d8593d-fcee-4e75-acb6-67b415f5d4a8</Guid>
<DNSname>D74DVP1.local</DNSname>
<NetBiosName>D74DVP1</NetBiosName>
<DcName></DcName>
</Domain>
</Forest>
with replacer.bat
call replacer.bat "C:Example.xml" "D74DVP1" "SomethingElse"
?
您可以使用批处理文件解决方案,但它有问题且速度很慢。您可以使用批处理- jscript混合脚本,如JREPL.BAT或FindRepl.bat,它们运行的速度要快得多,并且具有正则表达式的优点,但是在一个文件中实现简单的替换似乎太多了。幸运的是,您也可以使用此解决方案的相同方法:编写专门用于解决此问题的小型Batch-JScript混合脚本。
@set @a=0 /*
@cscript //nologo //E:JScript "%~F0" < Example.xml > Example.new
@goto :EOF */
WScript.Stdout.Write(WScript.StdIn.ReadAll().replace(/D74DVP1/g,"SomethingElse"));
关于这些奇怪的@lines的更多细节,请参阅这篇文章。有关JScript正则表达式的详细说明,请参阅此处。
PS -也许你忘记了"g"(一般)选项在你的VBScript(未发布)代码的regexp ?