Batch Datei: Regkey überprüfen Errorhandling

Hallo liebe Foren-Mitglieder,

ich nutze folgende Batchdatei, welche ich über unser Softwareverwaltungstool verteile, um zu überprüfen ob zwei Programme auf der aktuellen Version genutzt werden.
Prinzipiell funktioniert die Batch:

@echo off
echo Suche nach Reg Wert der aktuellen Cryptomator Version
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{BCC34416-1A31-393C-9BBB-FB34F3A5F72E} | find "1.6.3" && set CryptoVersion=1.6.3
if %ERRORLEVEL% neq 0 goto keinaktuellesCrypto
if %CryptoVersion%==1.6.3 echo Auf dem Client ist die Cryptomatoversion %CryptoVersion% installiert
echo.

:Dokancheck
echo Suche nach Reg Wert der aktuellen Dokan Version
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{65A3A964-3DC3-0105-0000-210531145800} /V DisplayVersion | find "1.5.0.3000" && set DokanVersion=1.5.0.3000
if %ERRORLEVEL% neq 0 goto keinaktuellesDokan

if %DokanVersion%==1.5.0.3000 echo Auf dem Client ist die Dokanversion %DokanVersion% installiert

::Überprüfung ob Dokan und Crypto aktuell sind
if %CryptoVersion%==1.6.3 if %DokanVersion%==1.5.0.3000 exit 0

:keinaktuellesCrypto
echo Es wurde keine aktuelle Cryptoversion gefunden
goto Dokancheck

:keinaktuellesDokan
echo Es wurde kein aktuelles Dokan gefunden
exit 1



Die Ausgabe sieht dann so aus, wenn z.B. beide Programme nicht aktuell sind:

Suche nach Reg Wert der aktuellen Cryptomator Version
Es wurde keine aktuelle Cryptoversion gefunden
Suche nach Reg Wert der aktuellen Dokan Version
Es wurde kein aktuelles Dokan gefunden
FEHLER: Der angegebene Registrierungsschlssel bzw. Wert wurde nicht gefunden.
FEHLER: Der angegebene Registrierungsschlssel bzw. Wert wurde nicht gefunden.


Wieso gibt er hier am ende noch zwei mal folgendes aus? : FEHLER: Der angegebene Registrierungsschlssel bzw. Wert wurde nicht gefunden.
Ich hatte in der Vorversion die zwei Zeilen nicht genutzt und auch nicht die Sprungmarken:
if %ERRORLEVEL% neq 0 goto keinaktuellesDokan
if %ERRORLEVEL% neq 0 goto keinaktuellesCrypto

Dann war das Problem, dass das Batch Skript abgebrochen hat wenn sie den Registrierungsschlüssel nicht gefunden hat:

reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{BCC34416-1A31-393C-9BBB-FB34F3A5F72E} | find "1.6.3" && set CryptoVersion=1.6.3
if ==1.6.3 echo Auf dem Client ist die Cryptomatoversion installiert
FEHLER: Der angegebene Registrierungsschlssel bzw. Wert wurde nicht gefunden.
"echo" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

Dann hat die Batch abgebroch. Dies sollte aber eigentlich nicht geschehen.

Gibt es hier Leute die sich gut mit Batches auskennen und mir das erklären können bzw. mir verraten wie ich nicht das ERROR-handlig mit den Sprungmarken nutzen muss?

Bin gespannt!

Viele Grüße und besten Dank im voraus

Content-Key: 1559632052

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

Ausgedruckt am: 22.01.2022 um 07:01 Uhr

Mitglied: NordicMike
NordicMike 27.11.2021 um 14:04:22 Uhr
Goto Top
reg query HKEY_LOCAL_MACHINE\bla bla >nul

Schickt einen evtl dabei auftretenden Fehler ins Nirvana
Mitglied: 149569
Lösung 149569 27.11.2021 aktualisiert um 16:59:08 Uhr
Goto Top
Sowas macht man doch heute gleich mit der Powershell ...
Oder noch besser einem PackageManager wie bspw Chocolatey
Mitglied: rubberman
Lösung rubberman 27.11.2021 um 18:11:41 Uhr
Goto Top
Zitat von @MemphisF:
Wieso gibt er hier am ende noch zwei mal folgendes aus? :

Kommt von REG.exe selbst. Die schreibt eine Fehlermeldung zu Stream 2 (StdErr). Musst du explizit mit 2>nul ins Nirvana schicken, á la
BTW: Die FIND.exe macht was Ähnliches wenn der String "1.6.3" gefunden wurde. Sie schreibt dann die komplette Zeile zu Stream 1 (StdOut). Wenn du das nicht sehen willst musst du's per >nul umleiten.

if ==1.6.3 echo Auf dem Client ist die Cryptomatoversion installiert
FEHLER: Der angegebene Registrierungsschlssel bzw. Wert wurde nicht gefunden.
"echo" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
Schau mal genau hin: if ==1.6.3
Die Variable %CryptoVersion% ist nicht definiert und somit ist die Syntax für das IF Statement nicht mehr gegeben, da vor dem == kein Vergleichsoperand steht.
Lässt sich mit Anführungszeichen auf beiden Seiten umgehen.

Steffen
Mitglied: MemphisF
MemphisF 01.12.2021 um 14:29:20 Uhr
Goto Top
Hamma. Vielen Frank
Heiß diskutierte Beiträge
general
Liste von URLs in wininet.dllFennek11Vor 1 TagAllgemeinInternet13 Kommentare

Hallo, die Frage ist zugleich enrsthaft und Satire: Windows enthält die Datei "c:\windows\system32\wininet.dll", die für viele Verbindungen ins Internet benötigt wird. Ein Blick in die ...

question
2 Faktor Authentifizierung generell abschaltenratzekahl1Vor 1 TagFrageGoogle Android9 Kommentare

Hallo zusammen, ich habe eine Frage: Kann ich in Google die 2 Faktor Authentifizierzung generell abschalten? Wenn ich ein Gerät als vertrauenswürdig hinzugefügt habe, ja, ...

question
Netzwerk Grafisch darstellen?FireWorldVor 1 TagFrageInternet8 Kommentare

Hallo, ich bin der Zeit auf der Suche nach einem Programm zur Grafischen Darstellung von inbound/outbound eines Servers in einem Rechenzentrum. Hat Jemand eine idee ...

info
Ruhe in Frieden, HackbratenVision2015Vor 1 TagInformationOff Topic5 Kommentare

Der US-Sänger Meat Loaf ist tot. Er starb laut seiner Facebook-Seite in der vergangenen Nacht im Alter von 74 Jahren. Meat Loaf, mit bürgerlichem Namen ...

question
Fritz Repeater 1750E "verloren"reksierpVor 1 TagFrageHardware9 Kommentare

Hallo, ich habe ein 150 Jahre altes Haus (ehemaliger Dorf-Bahnhof), sehr verwinkelt, viele Räume, mit Anbau, 2 Kriech-Dachböden. Vor mehreren Jahren hab ich einige Repeater ...

question
Tablet-Display defekt: wie Zugriff auf DatenMahstarDVor 1 TagFrageGoogle Android6 Kommentare

Guten Abend, ich habe ein Tablet überreicht bekommen mit der Bitte um den Versuch einer Datenrettung. Tablet: Samsung Galaxy Tab-A (2016, SM-T585) Das Display ist ...

info
SonicWall Bootloop seit letzter NachtSt-AndreasVor 1 TagInformationFirewall2 Kommentare

Sonicwall Gen 7 spielen Bootloop seit letzter Nacht. Hilfe dazu hier ...

question
Verständnisproblem SubnettingKarolaVor 17 StundenFrageNetzwerkgrundlagen6 Kommentare

Hallo, möchte mal nerven weil ich keine Antwort finde Ein Netzwerk 172.16.0.0 /16 besteht aus einem alten Router als 4 Port Switch und 4 Clients. ...