使用Windows Batch从XML文件中提取产品版本号
用Windows内置命令提取XML中的BuildVersion值
当然可以用Windows自带的工具搞定这个需求!不需要额外安装软件,下面分享两种实用的命令行方法,都是基于findstr和for命令组合实现的:
方法一:通过分隔符提取指定Token
这个方法适合标签格式固定的情况,利用for命令按分隔符拆分字符串:
for /f "tokens=3 delims== " %G in ('findstr /r "^<?define BuildVersion =" your_file.xml') do @echo %G
命令解释:
findstr /r "^<?define BuildVersion =" your_file.xml:用正则表达式匹配以目标标签开头的行,确保精准定位到包含版本号的那一行(把your_file.xml换成你的实际文件名)for /f "tokens=3 delims== ":以等号和空格作为分隔符,将匹配到的行拆分成多个片段,取第3个片段就是我们要的版本号- 如果是在批处理(
.bat/.cmd)文件中使用,需要把变量%G改成%%G
方法二:通过字符串替换精准截取
如果标签的空格格式可能有小变化,这种方法更灵活,通过两步替换提取纯版本号:
@echo off setlocal enabledelayedexpansion for /f "delims=" %%G in ('findstr /r "^<?define BuildVersion =" your_file.xml') do ( set "line=%%G" set "version=!line:*BuildVersion ==!" set "version=!version:?>=!" echo !version! ) endlocal
命令解释:
setlocal enabledelayedexpansion:开启延迟变量扩展,让循环里的变量替换能正常工作- 先把匹配到的整行内容存入
line变量 !line:*BuildVersion ==!:删除从行开头到BuildVersion =的所有内容,得到1.0.0.0 ?>!version:?>=!:删除末尾的?>,最终得到纯版本号1.0.0.0
注意事项:
- 确保目标标签是单独一行,且格式和你描述的一致(比如
BuildVersion和等号之间的空格) - 如果标签里的空格有变动(比如等号两边没有空格),只需调整命令里的分隔符或替换字符串即可
内容的提问来源于stack exchange,提问作者wasp256
相关产品推荐
相关产品推荐

