我是Windows批处理编程的新手。
我有以下XML文件
<itp:params>
<!--1 or more repetitions:-->
<itp:param name="persid">PERSID__</itp:param>
<itp:param name="attmnt">ATTMNTID__</itp:param>
</itp:params>
现在我必须更换参数PERSID__&amp; ATTMNTID__使用批处理文件。
我可以使用以下代码更新PERSID__
set _ATTMNTID=%1
set _PERSID=%2
setlocal DisableDelayedExpansion
set "search=PERSID__"
set "replace=%_PERSID%"
for /F "delims=" %%a in (%_XML_TPL%) DO (
set line=%%a
setlocal EnableDelayedExpansion
>> %_TEMP_FILE% echo(!line:%search%=%replace%!
endlocal
)
但是努力更新第二个参数ATTMNTID __。请帮助我。 谢谢你提前。
此致
的Pankaj
答案 0 :(得分:1)
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
SET "filename1=%sourcedir%\q48861626.txt"
SET "outfile=%destdir%\outfile.txt"
set _ATTMNTID=%1
set _PERSID=%2
setlocal DisableDelayedExpansion
set "search=PERSID__"
set "replace=%_PERSID%"
SET "SEARCH2=ATTMNTID__"
SET "REPLACE2=%_ATTMNTID%"
for /F "delims=" %%a in (%filename1%) DO (
set line=%%a
setlocal EnableDelayedExpansion
SET "line=!line:%search2%=%replace2%!"
ECHO !line:%search%=%replace%!
endlocal
)>> %outfile%
GOTO :EOF
您需要更改sourcedir
和destdir
的设置以适合您的具体情况。
我使用了一个名为q48861626.txt
的文件,其中包含我的测试数据。
生成定义为%outfile%
的文件简单地级联替换。
请注意在set
命令中使用引号以确保该行上的尾随空格不包含在分配的数据中。
请注意重定向到输出文件的位置。它会收集echo
的所有code block
输出并重定向到该文件,因此可以在此处使用>
代替>>
来创建新文件(如果需要)。