写了个批量替换字符串的bat批处理(replaceChar.bat)
在windows上跑case时,我用它来替换xml文档中的名称和值什么的,还可以。但如果遇到bat中有特殊意义的字符比如<,>,%等就不行了,而且替换过程会消除每行的空格。鉴于dos知识有限,还没找到好的办法来避免这两种状况。如果用shell脚本完成替换功能就简单多了。或者直接用ultraedit的替换功能更简单。
代码如下:
@echooff rem*************************************************************************** rem**replaceChar.bat-commandlineargumentsList** rem**** rem**%1-ext_name** rem**%2-charactersreplaced** rem**%3-newcharacters** rem**** rem*************************************************************************** setext_name=%1 setold_char=%2 setnew_char=%3 if"%ext_name%"==""gotowarning if"%old_char%"==""gotowarning if"%new_char%"==""gotowarning setlocalenabledelayedexpansion set/aa=1 for%%xin(*.%ext_name%)do( for/f"tokens=*"%%iin(%%x)do( set"var=%%i" ifnot!var!.==.( set"var=!var:%old_char%=%new_char%!" echo!var!!>>!a!.xml ) ) set/aa=!a!+1 ) gotoend :warning echothetoolreplaceCharrequires3commandlinearguments: echo1)extnameoffileinwhichyouwanttoreplacesomecharacters echo2)charactersyouwanttobereplaced echo3)newcharacterswithwhichyouwanttoreplacesomecharaceters :end echo*****endtoreplacecharacters***** echo-
如果想修改后的文件名和原来的一样,可以把这一段“echo!var!!>>!a!.xml
”改成“echo!var!!>>[path]%%x.xml
”,其中[path]是你的磁盘路径。