Batch file 如何在批处理文件中获取程序的主要、次要等版本号?

Batch file 如何在批处理文件中获取程序的主要、次要等版本号?,batch-file,Batch File,程序在命令行上返回此正则表达式类型的版本字符串[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}。因此,输出如下所示: C:\users\user\desktop>a.exe --version Version: 1.22.53.4134 我通过这个get Version info.bat将输出保存到变量Version for /f "usebackq tokens=1* delims=: " %%i in (`a.exe --version`) do

程序在命令行上返回此正则表达式类型的版本字符串
[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}
。因此,输出如下所示:

C:\users\user\desktop>a.exe --version
Version: 1.22.53.4134
我通过这个get Version info.bat将输出保存到变量
Version

for /f "usebackq tokens=1* delims=: " %%i in (`a.exe --version`) do (
    if /i "%%i"=="Version" set "Version=%%j"
)
为了解决我的确切问题,我只需要主要版次要版发行号,但是一个通用的、适应性强的解决方案当然也很好


如何在批处理文件中获取程序的主要版本号和次要版本号?

将点添加到delims,扩展标记,并将您的版本与所需元素复合:

for /f "usebackq tokens=1-4* delims=:. " %%i in (`a.exe --version`) do (
  if /i "%%i"=="Version" set "VerMAjorMinor=%%j.%%k"
)

您可以在批处理文件中使用此命令行:

for /F "tokens=1-3 delims=:. " %%I in ('a.exe --version') do if /I "%%I" == "Version" set "Version=%%J.%%K"
a.exe
分割行输出的分隔符是冒号
、点
和空格
,如
delims=:。
所指定


感兴趣的只是
标记=1-3
指定的前3个子字符串(标记)。第一个子串
Version
被分配给指定的循环变量
I
。第二个子串为
1
,根据
J
分配给下一个循环变量。第三个子字符串是
22
被分配给循环变量
K

效果很好,但我需要添加一行:
设置“Version=%Version:.=,%”
以获取带点的版本号。我不理解您的评论。在我的测试中,处理文本文件中的行
Version:1.22.53.4134
,而不是输出我没有的应用程序
a.exe
,环境变量
Version
在批处理文件执行后具有值
1.22
。点是
集合“Version=%%J.%%K”
中的固定字符。所以,要么你的问题不包含真实数据,要么你在需要额外一行的时候犯了错误。另外,命令行将版本字符串中的所有点替换为逗号。如果要在两个字符之间使用逗号,可以使用
%%J、%%K
而不是
%%J.%%K