If ERRORLEVEL Registry Abfrage
Ich habe ein Problem mit einer "if ERRORLEVEL" Abfrage
Guten Tag liebe Administrator.de Mitglieder,
Ich hab folgendes Batch-Problem. Und zwar will ich mehre Registrierungs Werte abfragen und in einer Text Datei speichern. Aber wenn diese nicht existieren soll das nicht vermerkt werden einfach zum nächsten springen. Hier meine Batch Datei:
So da dieser Registrierungs Wert immer hoffe ich immer existiert ist das ja kein Problem. Aber wenn ein anderer Registry-Wert mal nicht existiert funktioniert mein Script nicht. Die product.txt sieht dann immer folgendermaßen aus:
Wie kann ich dies verhindern ?
Danke im Vorraus für alle Poster !
Guten Tag liebe Administrator.de Mitglieder,
Ich hab folgendes Batch-Problem. Und zwar will ich mehre Registrierungs Werte abfragen und in einer Text Datei speichern. Aber wenn diese nicht existieren soll das nicht vermerkt werden einfach zum nächsten springen. Hier meine Batch Datei:
if ERRORLEVEL 1 goto next1
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductInformation" >> product.txt
:next1
...
So da dieser Registrierungs Wert immer hoffe ich immer existiert ist das ja kein Problem. Aber wenn ein anderer Registry-Wert mal nicht existiert funktioniert mein Script nicht. Die product.txt sieht dann immer folgendermaßen aus:
! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
Wie kann ich dies verhindern ?
Danke im Vorraus für alle Poster !
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 142768
Url: https://administrator.de/forum/if-errorlevel-registry-abfrage-142768.html
Ausgedruckt am: 17.04.2025 um 15:04 Uhr
5 Kommentare
Neuester Kommentar

Moin,
du kannst einen errorlevel nicht im Voraus abfragen, das ist nicht vbscript.
setz den Reg Query nochmal mit Redirection auf Nul davor.
Gruß
LotPings
@bastla, ja stand schon von Anfang an da
du kannst einen errorlevel nicht im Voraus abfragen, das ist nicht vbscript.
setz den Reg Query nochmal mit Redirection auf Nul davor.
Gruß
LotPings
@bastla, ja stand schon von Anfang an da
Hallo Pinkywesen!
Wie LotPings schon angemerkt hat, ist die Abfrage vorweg eigentlich nicht möglich - Du könntest es aber so (mäßig elegant) versuchen:
Im Zweifelsfall würde ich aber eher eine "
Grüße
bastla
[Edit] @77559: Stand Deine zweite Zeile auch vorher schon da? Wenn ja, hat mich der Winterschlaf wohl doch nochmal eingeholt ...
[/Edit]
Wie LotPings schon angemerkt hat, ist die Abfrage vorweg eigentlich nicht möglich - Du könntest es aber so (mäßig elegant) versuchen:
set q="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductInformation"
reg query %q%>nul 2>&1 && reg query %q%>>product.txt
for /f
"-Schleife herumbauen und dann auch nur die interessierende(n) Zeile(n) ausgeben ...Grüße
bastla
[Edit] @77559: Stand Deine zweite Zeile auch vorher schon da? Wenn ja, hat mich der Winterschlaf wohl doch nochmal eingeholt ...
Hallo Pinkywesen!
Mit einer "
erzeugt bei mir (XP SP3) die folgende Ausgabe:
Wenn anstelle von "CSDVersion" der (nicht vorhandene) Wert von "CDVersion" abgefragt würde, wäre das Ergebnis einfach gar keine Ausgabe (also auch ohne Fehlermeldung); genauso, wie wenn etwa anstelle von "CurrentVersion" nur "CurrVersion" verwendet würde ...
Grüße
bastla
... dein Script funktioniert bei mir gar nicht. Es gibt nichts aus.
Eigentlich hätte ich angenommen, dass genau das erwünscht wäre: Wenn der nicht-existente Wert von "ProductInformation" ausgelesen werden soll, wird der Datei "product.txt" nichts hinzugefügt; wenn Du "ProductInformation" durch zB "CSDVersion" ersetzt, sollte auch ein Eintrag in der Datei erzeugt werden.Mit einer "
for
"-Schleife (einzugeben direkt in die Kommandozeile, bzw in einem Batch mit %%i und %%j zu schreiben) sähe das dann so aus:for /f "skip=4 tokens=2*" %i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "CSDVersion" 2^>nul') do @echo %j
Service Pack 3
Grüße
bastla

Moin,
Bastla war schneller, ich poste meine ähnliche Antwort trotzdem.
Das stimmt nicht, es funkltioniert.
Und das es bei nicht vorhandenem Value ProductInformation NICHTS ausgibt, war doch genau deine Frage!
Bei meinen WinXP Pro und Win7Ultimate64Bit kommt da auch nichts.
aber wenn die Abfrage ein leeres Ergebnis erzeugt hilft auch die for schleife nicht.
Du kannst Produkt Informationen über den Value
erhalten , hier wäre eine for Schleife angebracht um mit findstr nach DisplaName und DisplayVersiom zu filtern.
oder auch mit WMIC über mit Windows Installer installierte Software
erhalten.
Gruß
LotPings
Bastla war schneller, ich poste meine ähnliche Antwort trotzdem.
Das stimmt nicht, es funkltioniert.
Und das es bei nicht vorhandenem Value ProductInformation NICHTS ausgibt, war doch genau deine Frage!
Bei meinen WinXP Pro und Win7Ultimate64Bit kommt da auch nichts.
Kannst du das mit der "for" Schleife bitter näher erläutern ?
Ich kann das auch süß oder herzhaft erklären,aber wenn die Abfrage ein leeres Ergebnis erzeugt hilft auch die for schleife nicht.
Du kannst Produkt Informationen über den Value
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
oder auch mit WMIC über mit Windows Installer installierte Software
wmic product get Name, Version
Gruß
LotPings