如何用批处理脚本从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:<=+% set line=%line:>=+% set line=%line:*+string+=% set line=%line:+=&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
相关产品推荐
相关产品推荐

