wmic datafile where name="C:\\Windows\\System32\\msiexec.exe" get Version /value
字符串 您可以使用wmic来执行此操作。你可以把它 Package 成一个批处理文件
@echo off
setlocal enableextensions
set "file=%~1"
if not defined file goto :eof
if not exist "%file%" goto :eof
set "vers="
FOR /F "tokens=2 delims==" %%a in ('
wmic datafile where name^="%file:\=\\%" get Version /value
') do set "vers=%%a"
echo(%file% = %vers%
endlocal
@if (@this==@isBatch) @then
@echo off
setlocal enableextensions
set "file=%~f1"
if not exist "%file%" goto :eof
cscript //nologo //e:jscript "%~f0" /file:"%file%"
endlocal
exit /b
@end
var file = WScript.Arguments.Named.Item('file').replace(/\\/g,'\\\\');
var wmi = GetObject('winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2')
var files = new Enumerator(wmi.ExecQuery('Select Version from CIM_datafile where name=\''+file+'\''))
while (!files.atEnd()){
WScript.StdOut.WriteLine(files.item().Version);
files.moveNext();
};
WScript.Quit(0)
@echo off
Powershell -c "exit 10 + ((Get-Command '%SystemRoot%\Notepad.exe').FileVersionInfo.FileVersionRaw).CompareTo([System.Version] '10.0.19041.1')"
If %ErrorLevel%==9 Echo File needs updating
If %ErrorLevel%==10 Echo File is expected version
If %ErrorLevel%==11 Echo File is newer than expected
8条答案
按热度按时间ecfsfe2w1#
字符串
您可以使用
wmic
来执行此操作。你可以把它 Package 成一个批处理文件型
将其保存为(示例)
getVersion.cmd
并调用为getVersion.cmd "c:\windows\system32\msiexec.exe"
已编辑以适应注解,并且不需要管理员权限。在本例中,使用混合cmd/JavaScript文件来查询wmi。用法相同
型
dced5bon2#
如果你愿意并能够使用PowerShell,下面的代码将工作。如果您使用的是受支持的Windows系统,PowerShell将可用。
字符串
如果必须在cmd.exe shell中运行它,可以用途:
型
fykwrbwg3#
字符串
tquggr8v4#
这将只给予文件版本:
字符串
测试结果:
型
du7egjpx5#
makecab
:字符串
示例输出(它有一个字符串版本,这是对wmic方法的一个小补充:):
型
你也可以看看tooltipinfo.bat
lqfhib0f6#
filever c:\windows\system32\notepad.exe(每个Windows操作系统上都预安装了filever)。
q43xntqr7#
filever.exe位于Windows 2003支持工具的SUPPORT.CAB中,也可能位于其他位置。
使用VBScript和来自CMD脚本的Scripting.FileSystemObject的方法
字符串
powershell方法的变体,如果您从CMD脚本调用。使用FileVersionRaw而不是FileVersion,因为FileVersion可以有额外的文本装饰,但必须使用ToString()才能获得预期的格式。
型
一个Powershell从CMD方法来比较版本,因为这可能是在第一时间询问的原因。必须使用%ErrorLevel%==x,因为ErrorLevel==x实际上大于或等于。
型
0s7z1bwu8#
在未提升的PowerShell中运行此命令以获取Thunderbird的版本:
字符串
它通过从版本信息中筛选出来输出产品版本。用chrome.exe测试了一下,它也工作了。