如何使用.bat文件更新xml文件参数?

时间:2018-02-19 07:53:44

标签: xml batch-file

我是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

1 个答案:

答案 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

您需要更改sourcedirdestdir的设置以适合您的具体情况。

我使用了一个名为q48861626.txt的文件,其中包含我的测试数据。

生成定义为%outfile%

的文件

简单地级联替换。

请注意在set命令中使用引号以确保该行上的尾随空格不包含在分配的数据中。

请注意重定向到输出文件的位置。它会收集echo的所有code block输出并重定向到该文件,因此可以在此处使用>代替>>来创建新文件(如果需要)。