patrick93
Goto Top

Batch zum Vergleichen der Firefox-Version

Guten Tag,

ich habe folgenden Batch-Script verfasst:
@echo off &setlocal
set "Datei=C:\Program Files (x86)\Mozilla Firefox\firefox.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"
for /f %%k in ("C:\test.txt") DO set "ActVersion=%%k"

if %ProdVersion% == %ActVersion% GOTO ONE
if %ProdVersion% [NOT] == %ActVersion% GOTO TWO

:ONE
echo Version is OK
pause

:TWO
echo Version is out of date
pause

Kurz zur Erklärung:
Zuerst soll die aktuell installierte Firefox-Version ausgelesen werden. Ist dies erfolgt, soll diese Version mit dem Wert, der in der ersten Zeile der Text-Datei test.txt eingetragen ist (z.B. 50.1.0), verglichen werden. Dazu soll das Script den Text in test.txt auslesen, als Variable %ActVersion% setzen und eben mit %ProdVersion% vergleichen. Ist es derselbe Wert, soll "Version is OK" ausgegeben werden, andernfalls "Version is out of date". Das Auslesen der Firefox-Version funktioniert, das habe ich seperat getestet. Auch wenn ich anstatt %ActVersion% den Wert 50.1.0 eingebe, funktioniert das Script. Nur scheinbar passt etwas nicht mit dem Auslesen aus der Test-Datei, nur weiß ich nicht was...

Letztendlich soll am Ende folgender Ablauf stattfinden:
Ich lese aus einer Softwareverteilung die aktuell freigegebene Firefox-Version aus und gebe sie als Text-Datei aus. Diese wird mit der aktuell installierten Version verglichen. Ist eine ältere Version installiert, soll eine Firewallregel aktiviert werden, die den Datenverkehr über Firefox blockt. Das oben beschriebene sollte mein Grundgerüst dafür sein, woran es aber im Moment scheitert...
Hat eventuell jemand eine Idee, was falsch ist, oder einen besseren Vorschlag, um mein Vorhaben umzusetzen?

Content-Key: 331572

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

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

Member: MrCount
Solution MrCount Mar 08, 2017 at 13:03:14 (UTC)
Goto Top
Servus,

dieses Script funktioniert:
@echo off &setlocal
set "Datei=C:\Program Files (x86)\Mozilla Firefox\firefox.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"^)  
)>"c:\tmp\getPV.vbs"  

for /f %%i in ('cscript //nologo "c:\tmp\getPV.vbs" "%Datei%"') do set "ProdVersion=%%i"  
del "c:\tmp\getPV.vbs"  
for /f %%k in (C:\tmp\test.txt) DO set "ActVersion=%%k"  

if %ProdVersion% == %ActVersion% GOTO ONE
if %ProdVersion% NEQ %ActVersion% GOTO TWO

:ONE
echo Version is OK
pause
exit

:TWO
echo Version is out of date
pause
exit

Pfade müsstest du noch anpassen...
Member: patrick93
patrick93 Mar 08, 2017 at 13:28:22 (UTC)
Goto Top
Vielen Dank!