我想创建一个批处理程序,用于查找和替换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 :(得分: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"
答案 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。