替换xml文件中的多个字符串(批处理)

时间:2015-07-21 16:50:44

标签: xml string batch-file sed

我想创建一个批处理程序,用于查找和替换xml文件中的字符串。

示例:

a39c82f341ba4c5aaa9b6536 to VT4,1_0,0_KAL-ZG_2,2m
0518ffb000d6415dbaaa1b97 to VT4,1+2,5_KAL-ZG_2,2m
331025a98e844fe8bbc52785 to VT4,1-2,5_KAL-ZG_2,2m

我编码了,我用gnu sed创建了这个:

SET SED_PATH=SED.EXE -i
%SED_PATH% "s/54d73c26be75470f8d5d337d/VT4,1-2,5_KAL-ZG_3,3m/g" "s/1688215fce1142d488c1097b/jtr_stred_zapad/g" %filename%

但它不会检测文件中是否存在某些字符串并且它会出错。

2 个答案:

答案 0 :(得分:0)

如果您的文件不是太大,可以使用replacer.bat

call replacer.bat "c:\some.xml" "a39c82f341ba4c5aaa9b6536" "VT4,1_0,0_KAL-ZG_2,2m" "0518ffb000d6415dbaaa1b97" "VT4,1+2,5_KAL-ZG_2,2m" "331025a98e844fe8bbc52785" "VT4,1-2,5_KAL-ZG_2,2m"

更强大的解决方案是JREPLFindRepl

答案 1 :(得分:0)

这是一个Batch-JScript混合脚本,非常简单,但也非常高效;它将在XP上的任何Windows版本上运行。用.bat扩展名保存。

@set @Batch=1 /*

@echo off
CScript //nologo //E:JScript "%~F0" < input.xml > output.xml
REM move /Y output.xml input.xml

goto :EOF    */

// JScript section

WScript.Stdout.Write(WScript.StdIn.ReadAll().replace
   ( /(a39c82f341ba4c5aaa9b6536)|(0518ffb000d6415dbaaa1b97)|(331025a98e844fe8bbc52785)/g,
     function($0,$1,$2){return($1?"VT4,1_0,0_KAL-ZG_2,2m":$2?"VT4,1+2,5_KAL-ZG_2,2m":"VT4,1-2,5_KAL-ZG_2,2m")} )
);

有关JScript中正则表达式的进一步说明,请参阅this site