chrisdynamite
Goto Top

Dateiversionsabfrage per batch bei einem client geht sie, bei anderen nicht

guten tag,
folgende code habe ich aus dem netz gefunden und benutze ihn:

@echo off & setlocal
set "Datei=c:\temp\firefox.exe"
set "GetV=%Temp%\GetV.vbs"
echo Set objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")>"%GetV%"
echo Set colFiles=objWMIService.ExecQuery ("SELECT * FROM CIM_Datafile WHERE Name='"^&Replace(WScript.Arguments(0),"\","\\")^&"'")>>"%GetV%"
echo For Each objFile in colFiles: WScript.Echo objFile.version: Next>>"%GetV%"
set Version=
for /f %%i in ('cscript //nologo "%GetV%" "%Datei%"') do set "Version=%%i"
if defined Version echo %Datei% - Version %Version%
del "%GetV%"
pause

dieser frägt in einer batch die dateiversion von einer exe ab. damit kann ich dann in der batch weiter arbeiten.

bei 1 win 7 x64 funktioniert das script ohne probleme bei einem anderen pc mit komplett aktuellem patchstand bekomme ich die meldung:

C:\users\admini~.mer\appdata\local\temp\getv.vbs<1, 1> laufzeitfehler in Microsoft VBScript: Objekt erforderlich: 'objWMIService'


wie kann das sein, dass ein und der gleiche code auf unterschiedlichen maschinen gleicher prozessor-und os bauart unterschliedlich interpretiert wird?

wie kann ich dies ändern?

grüße chris

Content-Key: 213611

Url: https://administrator.de/contentid/213611

Printed on: April 19, 2024 at 07:04 o'clock

Member: colinardo
colinardo Aug 07, 2013 updated at 12:20:56 (UTC)
Goto Top
Hallo Chris,
bitte poste deinen Code mit Tags.
Eventuell hat der User auf dem PC nicht genug Rechte für WMI-Abfragen.
Du kannst die Datei-Version auch ohne WMI ausgeben lassen (Das sollte auf jeden Fall funktionieren)
echo Set objFSO = CreateObject("Scripting.FileSystemObject")>"%GetV%"  
echo Wscript.Echo objFSO.GetFileVersion(Replace(WScript.Arguments(0),"\","\\"))>>"%GetV%"  

Grüße Uwe
Member: ChrisDynamite
ChrisDynamite Aug 07, 2013 updated at 12:51:08 (UTC)
Goto Top
wie sähe dann der code letztlich aus?

so sieht mein code dann aus:


@echo off & setlocal
set "Datei=C:\Program Files (x86)\Microsoft Dynamics AX\40\Client\Bin\AX32.exe"
set "GetV=%Temp%\GetV.vbs"
echo Set objFSO = CreateObject("Scripting.FileSystemObject")>"%GetV%"
echo Wscript.Echo objFSO.GetFileVersion(Replace(WScript.Arguments(0),"\","\\"))>>"%GetV%"
set Versionx64=
for /f %%i in ('cscript //nologo "%GetV%" "%Datei%"') do set "Versionx64=%%i"
if defined Versionx64 echo %Versionx64%
pause
Member: colinardo
colinardo Aug 07, 2013 at 12:48:54 (UTC)
Goto Top
hast du den obigen Code selber geschrieben oder nur kopiert ? dann wüstest du wo der hin kommt. Bitte poste Ihn erst mit Tags ansonsten gibts hier nix ....
Member: ChrisDynamite
ChrisDynamite Aug 07, 2013 at 12:51:49 (UTC)
Goto Top
danke für den codeteil.
Member: Dani
Dani Aug 07, 2013 updated at 13:11:30 (UTC)
Goto Top
Moin,
reden wir russisch oder was ist daran so schwer die Formatierungshilfen zu nutzen? Das ist nicht das erste Mal das du die Sache ignorierst! Ist es zuviel verlangt, eine Minute zu investieren und das ordentlich zu schreiben? Ich denke nicht!

Es stehen noch divesere Beiträge von dir aus... wenn ich dein Profil anschaue.


Grüße,
Dani (Mod)
Member: clSchak
clSchak Aug 07, 2013 updated at 20:35:47 (UTC)
Goto Top
das ist nur kopiert... nutze ich auch face-wink allerdings für NAV:

set "Datei=%PROGRAMFILES(X86)%\Microsoft Dynamics NAV\70\RoleTailored Client\Microsoft.Dynamics.Nav.Client.exe"  
	(
	  echo Set objFSO = CreateObject^("Scripting.FileSystemObject"^)  
	  echo Set objShell = CreateObject^("Shell.Application"^)  
	  echo Set objFolder = objShell.NameSpace^(objFSO.GetParentFolderName^(WScript.Arguments^(0^)^)^)
	  echo WScript.Echo objFolder.ParseName^(objFSO.GetFileName^(WScript.Arguments^(0^)^)^).ExtendedProperty^("productversion"^)  
	)>"%temp%\getPV.vbs"  
for /f %%i in ('cscript //nologo "%temp%\getPV.vbs" "%Datei%"') do set "ProdVersion=%%i"  
del "%temp%\getPV.vbs"  
	

Und das Script funktioniert Tadellos auf Win7 (wir nutzen die Abfrage bei jedem Installationsscript wo es anschließen mit in`s Log geschrieben wird)