Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

If ERRORLEVEL Registry Abfrage

Frage Entwicklung Batch & Shell

Mitglied: Pinkywesen

Pinkywesen (Level 1) - Jetzt verbinden

13.05.2010 um 13:25 Uhr, 5001 Aufrufe, 5 Kommentare

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:

01.
if ERRORLEVEL 1 goto next1 
02.
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductInformation" >> product.txt  
03.
:next1 
04.
...
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:

01.
! REG.EXE VERSION 3.0 
02.
 
03.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
Wie kann ich dies verhindern ?

Danke im Vorraus für alle Poster !
Mitglied: LotPings
13.05.2010 um 14:39 Uhr
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
Bitte warten ..
Mitglied: bastla
13.05.2010 um 15:07 Uhr
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:
01.
set q="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductInformation" 
02.
reg query %q%>nul 2>&1 && reg query %q%>>product.txt
Im Zweifelsfall würde ich aber eher eine "for /f"-Schleife herumbauen und dann auch nur die interessierende(n) Zeile(n) ausgeben ...

Grüße
bastla

[Edit] @LotPings: Stand Deine zweite Zeile auch vorher schon da? Wenn ja, hat mich der Winterschlaf wohl doch nochmal eingeholt ... [/Edit]
Bitte warten ..
Mitglied: Pinkywesen
14.05.2010 um 01:28 Uhr
Zitat von bastla:
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:
01.
set q="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductInformation" 
02.
> reg query %q%>nul 2>&1 && reg query %q%>>product.txt 
03.
> 
Im Zweifelsfall würde ich aber eher eine "for /f"-Schleife herumbauen und dann auch nur die interessierende(n)
Zeile(n) ausgeben ...

Grüße
bastla

[Edit] @LotPings: Stand Deine zweite Zeile auch vorher schon da? Wenn ja, hat mich der Winterschlaf wohl doch nochmal eingeholt
... [/Edit]


Danke erstmal für deine Antwort,
aber dein Script funktioniert bei mir gar nicht. Es gibt nichts aus. Kannst du das mit der "for" Schleife bitter näher erläutern ?
Bitte warten ..
Mitglied: bastla
14.05.2010 um 11:53 Uhr
Hallo Pinkywesen!
... 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
erzeugt bei mir (XP SP3) die folgende Ausgabe:
Service Pack 3
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
Bitte warten ..
Mitglied: LotPings
14.05.2010 um 12:00 Uhr
Moin,
Bastla war schneller, ich poste meine ähnliche Antwort trotzdem.

Zitat von Pinkywesen:
aber dein Script funktioniert bei mir gar nicht. Es gibt nichts aus.
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"
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
wmic product get Name, Version
erhalten.

Gruß
LotPings
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Server
gelöst SCCM2012 Abfrage eines Registry Wertes (5)

Frage von busteron zum Thema Windows Server ...

Batch & Shell
gelöst Seltsames Verhalten bei Errorlevel abfrage in FOR DO Schleife (1)

Frage von Kalma73 zum Thema Batch & Shell ...

Datenbanken
gelöst Row Number bei einer Abfrage sinnvoll einsetzen (1)

Frage von Aximand zum Thema Datenbanken ...

Batch & Shell
gelöst Batch Abfrage Vergleiche mit Variable goto (4)

Frage von Zunaras zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...