在读取XML注释代码时,感叹号(!)会产生问题



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

执行批处理文件的命令:

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

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

我的评论,有一点改进。

@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

最新更新