wmic datafile where name="C:\\Windows\\System32\\msiexec.exe" get Version /value
È possibile utilizzare wmic
per farlo. E si può avvolgerlo in un file batch
@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
Salva come (esempio) getVersion.cmd
e chiamare come getVersion.cmd "c:\windows\system32\msiexec.exe"
modificato di adattarsi ai commenti e non richiede diritti di amministratore. In questo caso, un file ibrido cmd/javascript viene utilizzato per interrogare wmi. Stesso uso
@if (@[email protected]) @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)
fonte
2014-09-03 15:53:12
possibile duplicato di [Strumento riga di comando per scaricare la versione DLL di Windows?] (Http://stackoverflow.com/questions/602802/command-line-tool-to-dump-windows-dll-version) –