通过cmd/bat从文件中获取产品版本

通过cmd/bat从文件中获取产品版本,cmd,getfileversion,Cmd,Getfileversion,我有一个包含版本资源的文件,该文件的vesrion/Product Version字段已填充。我需要通过BAT文件检索产品版本。例如,在bat文件的输出中有ProductVersion 1.0.1的文件,我不希望有字符串“101”或“1.0.1” 从我收集的有关filever输出的信息来看,它总是在列中,您需要第五列(版本)。因此,一个简单的for就足够了: for /f "tokens=5 delims= " %%v in ('filever myFile.dll /b') do echo %

我有一个包含版本资源的文件,该文件的vesrion/Product Version字段已填充。我需要通过BAT文件检索产品版本。例如,在bat文件的输出中有ProductVersion 1.0.1的文件,我不希望有字符串“101”或“1.0.1”

从我收集的有关
filever
输出的信息来看,它总是在列中,您需要第五列(版本)。因此,一个简单的
for
就足够了:

for /f "tokens=5 delims= " %%v in ('filever myFile.dll /b') do echo %%v

对于像我这样的dummy,在上面的语句中有一个更正,以获得产品版本的值,它如下所示:

for /f "tokens=5 delims= " %%v in ('filever myFile.dll /b /v') do echo %%v

/v
参数丢失,我无法获得正确的值。

要从资源RC文件读取版本,可以使用:

for /F "tokens=3" %%a in ( 'findstr ProductVersion YourProgram.rc' ) do set VERSION=%%~a
你可以使用的工具,这是因为它是安静的旧,例如

$ sigcheck.exe -q -n app.exe
5.0.0.1241

通过指定
-q
(安静)和
-n
,它将只显示文件版本号。

我知道Filever,但它提供了太多的信息。您能帮我解析filever的输出吗?@zabalus:请参阅编辑。我没有找到适用于Windows 7的
filever
,因此我无法直接测试,但代码适用于KB文章中给出的示例输出。太好了,这就是我要找的。皮蒂:五年后你回答:)。对Filever.exe工具的良好支持已结束+我对这一答案表示怀疑。谢谢