如何在批处理文件中打印XML元素值

时间:2016-01-21 13:36:51

标签: xml batch-file

我正在尝试通过批处理脚本从XMl文件中打印一个值。例如,我的xml文件如下所示

<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
    <int name="status">0</int><int name="QTime">0</int>
</lst>
<lst name="initArgs">
    <lst name="defaults"><str name="config">data-config.xml</str>
    </lst>
</lst>
<str name="command">status</str>
<str name="status">idle</str>
<str name="importResponse"/>
<lst name="statusMessages">
    <str name="Total Requests made to DataSource">1</str>
    <str name="Total Rows Fetched">19</str><str name="Total Documents Skipped">0</str>
</response>

如何读取此xml文件并通过批处理脚本打印“Total Rows Fetched = 19”。感谢。

1 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q34925347.txt"
FOR /f "usebackqtokens=1-4delims=<=>" %%a IN ("%filename1%") DO (
 IF "%%~b"=="str name" IF "%%~c"=="Total Rows Fetched" ECHO %%~c=%%d
 IF "%%~a"=="str name" IF "%%~b"=="Total Rows Fetched" ECHO %%~b=%%c
)
GOTO :EOF

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

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

使用&#34;令牌&#34;简单地划分线路。功能,在<=>上分隔。

如果令牌匹配,则重建该行。

请注意,发布后,前导空格将分配到%%a,以便调用第一个if行。

如果生成的文件没有前导空格,则赋值将移位1,因为空格不再存在,因此不会被解释为标记。然后第二条if行变为活动状态。

两条if行都不会影响操作,除非你有一个非常棘手的源文件。