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

如何用批处理脚本从XML文件中提取指定字符串?

提取XML中address属性值的批处理脚本修改方案

现有文件内容

test.xml 内容

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configuration>
    <messaging msg="otherfiles.xml" />
    <counter tes="01" />
    <gate address="192.168.1.1:12345" allowed="172.11.1.1"/>
</configuration>

现有批处理脚本

@echo OFF
set dir="D:\Test"
for /f "delims=" %%i in ('findstr /i /c:"address" %dir%\test.xml') do call :job "%%i"
goto :eof

:job
set line=%1
set line=%line:/=%
set line=%line:&lt;=+%
set line=%line:&gt;=+%
set line=%line:*+string+=%
set line=%line:+=&amp;rem.%
echo.%line%>>%dir%\output.txt

:eof

需求

提取address属性的值,期望输出到output.txt的内容为:

192.168.1.1:12345

修改后的批处理脚本

@echo OFF
set "dir=D:\Test"
for /f "delims=" %%i in ('findstr /i /c:"address" "%dir%\test.xml"') do call :job "%%i"
goto :eof

:job
set "line=%~1"
:: 定位到address字符串之后的内容
set "line=%line:*address=%"
:: 跳过开头的="前缀,截取到下一个双引号前的内容
set "line=%line:~2%"
set "line=%line:"="&rem.%"
echo %line%>>"%dir%\output.txt"

:eof

关键修改说明

  • 修正变量赋值的引号使用逻辑,避免路径含空格时出错,比如set "dir=D:\Test"替代原写法
  • 简化处理逻辑:直接定位到address关键字后,跳过属性名后的="前缀,再通过截断双引号后的内容得到目标值
  • 移除原脚本中对提取address值无意义的字符替换操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:01:13