我有一个执行文本替换操作的批处理文件。进行文本替换时,它没有从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
包含!
的行上的输出损坏的原因是什么?如何解决代码?
答案 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