如何使用VBScript对具有相似节点集的XML中的单词进行修改



以下是一个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 ?

最新更新