You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用批处理脚本提取XML文件中特定测试结果数据

从多个XML文件提取指定标签值的批处理方案

推荐方案:批处理结合PowerShell(可靠稳定)

批处理本身对XML的结构化解析支持有限,借助Windows自带的PowerShell可以精准提取目标值,以下是可直接运行的脚本:

@echo off
setlocal enabledelayedexpansion

:: 匹配当前目录下所有XML文件,可修改为指定路径(如 "D:\test\*.xml")
set "xml_files=*.xml"

:: 存储所有文件的提取结果
set "results="

for %%f in (%xml_files%) do (
    :: 调用PowerShell解析XML,通过XPath定位目标标签
    for /f "delims=" %%r in ('powershell -Command "$xml = [xml](Get-Content '%%f'); $xml.SelectSingleNode('//TestResults[@index=''Sensor1'']/Passed').InnerText"') do (
        set "current_result=%%f: %%r"
        set "results=!results!!current_result!^n"
        :: 实时打印当前文件的结果
        echo !current_result!
    )
)

:: 输出所有结果,也可将结果写入文件(如 echo !results! > output.txt)
echo.
echo 所有提取结果汇总:
echo !results!

endlocal

脚本说明

  • enabledelayedexpansion 确保循环中变量能正确更新
  • XPath表达式 //TestResults[@index='Sensor1']/Passed 精准定位index="Sensor1"的TestResults标签下的Passed子标签
  • 提取的结果会存入results变量,同时打印到控制台,也可直接写入文件保存

备选方案:纯批处理(仅适用于格式严格的XML)

如果环境限制无法使用PowerShell,可尝试纯批处理方法,但仅当XML格式完全规范(标签无跨行、嵌套)时有效:

@echo off
setlocal enabledelayedexpansion

set "xml_files=*.xml"
set "results="

for %%f in (%xml_files%) do (
    set "in_target_section="
    for /f "tokens=* delims=" %%l in (%%f) do (
        :: 检测是否进入目标TestResults标签
        echo %%l | findstr /i "<TestResults index=\"Sensor1\">" >nul
        if not errorlevel 1 set "in_target_section=1"
        
        :: 在目标区域内提取Passed标签的值
        if defined in_target_section (
            echo %%l | findstr /i "<Passed>" >nul
            if not errorlevel 1 (
                set "line=%%l"
                :: 通过字符串替换剥离标签,提取true/false
                set "line=!line:*<Passed>=!"
                set "result=!line:</Passed>=!"
                set "current_result=%%f: !result!"
                set "results=!results!!current_result!^n"
                echo !current_result!
                :: 提取完成后退出当前标签区域
                set "in_target_section="
            )
        )
    )
)

echo.
echo 所有提取结果汇总:
echo !results!

endlocal

注意事项

  • 纯批处理方法依赖XML的排版格式,若Passed标签跨行、存在额外属性或缩进混乱,会导致提取失败
  • 优先推荐PowerShell方案,兼容性和可靠性更强

内容的提问来源于stack exchange,提问作者Cristine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 14:15:34