Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 从批处理文件读取xml并比较此值_Batch File_Xml Parsing - Fatal编程技术网

Batch file 从批处理文件读取xml并比较此值

Batch file 从批处理文件读取xml并比较此值,batch-file,xml-parsing,Batch File,Xml Parsing,我有一个XML文件。我只想使用批处理文件从这个XML文件中读取一个特定的标记值,并将这个值与其他值进行比较 我的XML文件是: <cruisecontrol project="AAA"> <sourcemonitor_metrics> <project version="3.3"> <metric_names name_count="15"> <metric_name id="M0" type="number">

我有一个XML文件。我只想使用批处理文件从这个XML文件中读取一个特定的标记值,并将这个值与其他值进行比较

我的XML文件是:

<cruisecontrol project="AAA">
<sourcemonitor_metrics>
  <project version="3.3">

    <metric_names name_count="15">
      <metric_name id="M0" type="number">Lines</metric_name>
      <metric_name id="M1" type="number">Statements</metric_name>
      .
      .
      . 

      <metric_name id="M13" type="average" values="block_depths">Average Block Depth</metric_name>
      <metric_name id="M14" type="average">Average Complexity</metric_name>
    </metric_names>
    <checkpoints checkpoint_count="1">
      <checkpoint checkpoint_name="NewcheckPoint" ignore_blank_lines="false">
        <metrics metric_count="15">
          <metric id="M0">34126</metric>
          <metric id="M1">15278</metric>
          .
          .
          .
          <metric id="M13">2.48</metric>
          <metric id="M14">3.34</metric>   <!-- Want to read this value in batch -->
        </metrics>

线
声明
.
.
. 
平均块体深度
平均复杂度
34126
15278
.
.
.
2.48
3.34
##请忽略结束标记。

我想读取
值。
我对批处理脚本非常陌生。
请建议我如何执行此操作?

首先,阅读
HELP FINDSTR
并尝试此简单命令

 findstr /r /c:"\<metric id=\"M14\"\>[0-9,.]*</metric\>" my.xml

它使用
作为分隔符解析上一个命令返回的行,并返回第三个参数,即所需的值。

您能使用powershell吗?
 for /f "delims=^<^> tokens=3" %a in ('findstr /r /c:"\<metric id=\"M14\"\>[0-9,.]*</metric\>" my.xml') do @echo %a