2015-07-21 133 views
0

我想创建一个批处理程序来查找和替换xml文件中的字符串。用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% 

但是,如果存在于文件中的一些字符串,它给出了一个错误不检测。

+0

或有人可以在vb.net中发布代码我也知道它 –

回答

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

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

相关问题