在阅读XML注释代码时-感叹号(!)造成了问题

时间:2018-07-27 14:08:53

标签: xml batch-file

我有一个执行文本替换操作的批处理文件。进行文本替换时,它没有从XML <!-- -->中读取注释的代码。因此,由于在操作过程中删除了感叹号!,因此使用XML进行后期替换操作的输出文件变为无效。

执行批处理文件的命令:

batchfilename.bat "old_str" "new_str"

批处理文件脚本:

@echo off
set "_search=%~1"
set "_replace=%~2"
setlocal EnableDelayedExpansion
copy /y Market.xml Market_copy.xml
for /F  "tokens=1 delims=" %%a in (Market.xml) DO (
    set line=%%a
    >> Market_New.xml echo(!line:%_search%=%_replace%!
)
move /y Market_New.xml Market.xml
echo Done

包含!的行上的输出损坏的原因是什么?如何解决代码?

1 个答案:

答案 0 :(得分:2)

我的评论,有一点改进。

@Echo Off
SetLocal DisableDelayedExpansion

Set "_search=%~1"
Set "_replace=%~2"

Copy /Y "Market.xml" "Market_copy.xml"||Exit /B
(For /F  "UseBackQ Delims=" %%A In ("Market_copy.xml") Do (Set "line=%%A"
    SetLocal EnableDelayedExpansion
    Echo=!line:%_search%=%_replace%!
    EndLocal))>"Market.xml" 
Echo Done
Pause