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

Windows批处理解析XML标签属性:提取并拼接filename值

Windows批处理解析XML并拼接标签filename属性值

示例XML(参考)

<Root>
  <File filename="c:\here\there.txt" />
  <File filename="c:\here\there2.txt" />
  <File filename="d:\docs\file3.docx" />
</Root>

期望输出

"c:\here\there.txt" "c:\here\there2.txt" "d:\docs\file3.docx"

修正后的批处理代码

@echo off
setlocal enabledelayedexpansion

:: 初始化拼接变量为空
set "file_list="

:: 筛选包含<File filename=的行并提取属性值
for /f "tokens=2 delims== " %%a in ('findstr /i "<File filename=" input.xml') do (
    :: 截取带引号的属性值,清理结尾的无效字符
    set "current_file=%%a"
    set "current_file=!current_file:"/>=!"
    set "current_file=!current_file:" >=!"
    :: 累积到结果变量
    set "file_list=!file_list! !current_file!"
)

:: 移除开头多余的空格
set "file_list=!file_list:~1!"

:: 输出最终拼接结果
echo %file_list%

endlocal

关键说明

  • 延迟扩展必须开启:setlocal enabledelayedexpansion是核心,for循环内部修改并读取变量时,需要用!变量名!替代%变量名%,才能获取实时更新的变量值,这是你之前无法累积变量的主要原因。
  • 属性值提取逻辑:通过findstr筛选目标行,再用for /f以=和空格为分隔符提取第二个token(即带引号的filename值)。
  • 清理无效字符:针对XML标签结尾的"/>或" />格式,通过变量替换去掉多余部分,确保只保留带引号的路径。
  • 变量拼接:每次将当前属性值追加到结果变量,最后移除开头的多余空格,得到标准格式的字符串。

注意事项

  • 替换代码中的input.xml为你的实际XML文件路径。
  • 如果XML中filename属性使用单引号或格式特殊,需要调整delims和变量替换的规则。
  • 若路径本身包含空格,只要XML中属性值已用引号包裹,就能被正确保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:15:04