Top-Themen

Aktuelle Themen (A bis Z)

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
GELÖST

Beim Auslesen von REG-Key eventuelle Fehlermeldung unterdrücken

Frage Entwicklung Batch & Shell

Mitglied: rdietrich

rdietrich (Level 1) - Jetzt verbinden

05.02.2009, aktualisiert 14:22 Uhr, 10697 Aufrufe, 7 Kommentare

Hallo zusammen. Möchte in meinem Batch-Script eine Fehlermeldung abfangen, die ausgeworfen wird, wenn ein Registry-Schlüssel nicht vorhanden ist.

Mein Script liest einen Registry-Key aus, beispielsweise die Versionsnummer der Office-Installation.

01.
for /f "tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Office\11.0\Common\ProductVersion" /v LastProduct ^| findstr Last') do call :office "%%a"
Das funktioniert allerdings auch nur dann, wenn Office 2003 in irgendeiner Build-Version installiert ist. Ist eine ältere oder jüngere oder gar keine Office-Version auf dem Client installiert, dann bekomme ich immer die Fehlermeldung:

Fehler: Der angegebene Registrierungsschlüssel oder Wert konnte nicht gefunden werden.
Daraufhin habe ich versucht, die Fehlermeldung, die wohl offensichtlich direkt von der REG.EXE gespuckt wird, zu unterdrücken:

01.
for /f "tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Office\11.0\Common\ProductVersion" /v LastProduct ^| findstr Last ^>nul 2^>nul ^|^| echo Key nicht gefunden') do call :office "%%a"
...funktioniert aber nicht. Bin für jede Hilfe dankbar.

Gruß,

R.D.
Mitglied: qwertz
05.02.2009 um 15:12 Uhr
Hallo,

die Fehlermeldung kommt, wie du schon richtig vermutet hast, von der REG.EXE. Also muß auch deine Fehlerumleitung sich auf die REG.EXE beziehen. Hier mal ein Codebeispiel, wie es funktioniert:
01.
@echo off 
02.
for /f "tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Office\11.0\Common\ProductVersion" /v LastProduct 2^>nul ^| findstr Last') do set OfficeNr="%%a" 
03.
if %OfficeNr%.==. (echo Office-Schlüssel nicht gefunden !!!) else (call :office %OfficeNr%) 
04.
Goto Exit 
05.
 
06.
:Office 
07.
Echo Office LastProduct-Nr: %1 gefunden  
08.
Goto Exit 
09.
 
10.
:Exit
Die Standardausgabe darfst du nicht auf NUL umleiten, da ja sonst dem Befehl findstr nichts übergeben wird. Im Fehlerfall wird durch die Anweisung 2>NUL die Fehlermeldung ins Nirvana geschickt. Die Fehlerbehandlung selbst folgt in der nächsten Zeile. Falls du keine Fehlerbehandlung machen willst, sondern lediglich keine Ausgabe wünschst, dann kannst du das ganze auch folgendermassen abkürzen:
01.
@echo off 
02.
for /f "tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Office\11.0\Common\ProductVersion" /v LastProduct 2^>nul ^| findstr Last') do call :office "%%a" 
03.
Goto Exit 
04.
 
05.
:Office 
06.
Echo Office LastProduct-Nr: %1 gefunden  
07.
Goto Exit 
08.
 
09.
:Exit
In dem Fall wird eine Fehlermeldung von REG.EXE unterdrückt, die Subroutine :Office nicht ausgeführt und das Script in der nächsten Zeile fortgesetzt.

Ich hoffe das ich dir hiermit weiterhelfen könnte.

Viele Grüsse
Bitte warten ..
Mitglied: rdietrich
05.02.2009 um 15:26 Uhr
Keine weiteren Fragen

merci qwertz.
Bitte warten ..
Mitglied: rdietrich
05.02.2009 um 16:10 Uhr
ah, doch. Eine Frage habe ich tatsächlich noch:

01.
if %OfficeNr%.==.
Ich habe die Nomenklatur von .==. noch nie gesehen. - Auf was prüft der Ausdruck? Existenz? Zahlenwert?
Bitte warten ..
Mitglied: bastla
05.02.2009 um 19:41 Uhr
Hallo rdietrich!

Ich würde es zwar eher so
if "%OfficeNr%"==""
oder besser (da ggf auch in einer "for"-Schleife einsetzbar, ohne dass "delayedExpansion" aktiviert sein muss) so
if not defined OfficeNr
schreiben, das Ergebnis ist aber das selbe: Wenn die Variable %OfficeNr% nichts enthält (und daher also eigentlich gar nicht existiert), wird der folgende Teil (Ausgabe Fehlermeldung) ausgeführt.
Ich habe die Nomenklatur von .==. noch nie gesehen
Du kannst anstelle der Punkte (fast) beliebige Zeichen verwenden, da es ja nur darum geht, zu überprüfen, ob links vom "=" außer dem verwendeten Zeichen (hier also ".") noch mehr steht (was nur der Fall ist, wenn %OfficeNr% einen Inhalt hat).

Grüße
bastla
Bitte warten ..
Mitglied: rdietrich
05.02.2009 um 21:11 Uhr
ich dachte schon, dass
01.
if not defined Variable
unter umständen ein anderes ergebnis liefert als
01.
if "%Variable%"==""
da es doch einen unterschied macht, ob die variable existiert und dabei bloß *leer* ist - oder ob sie gar nicht existiert. Aber wieder was dazugelernt. Danke nochmals

Gruß,

R.D.
Bitte warten ..
Mitglied: bastla
05.02.2009 um 21:18 Uhr
Hallo rdietrich!
unterschied ..., ob die variable existiert und dabei bloß *leer* ist - oder ob sie gar nicht existiert.
Für andere Sprachen stimmt das auch, aber in Batch wird eine Variable durch
set variable=
gelöscht (kann daher nicht leer sein).

Grüße
bastla
Bitte warten ..
Mitglied: rdietrich
06.02.2009 um 09:02 Uhr
Okay, vielen Dank

Kann nur immerwieder feststellen, wie hilfreich dieses Forum hier ist. 100 * Danke.
Bitte warten ..
Ähnliche Inhalte
Windows 7
Windows 7 Installation mit Key auslesen
Frage von DogukannWindows 710 Kommentare

Hallo Admins, ich hoffe das schon jemand die Erfahrung gemacht hat und mir behilflich sein kann. Ich habe folgendes ...

Entwicklung
VB Windows Key aus Regestry auslesen
gelöst Frage von 122925Entwicklung2 Kommentare

Hallo, ich würde gerne Sachen aus der Regestry auslesen und in eine Textbox ausgeben. Danke

Viren und Trojaner
Eventueller Malware Angriff auf nginx...
Frage von linuxverbrezlerViren und Trojaner4 Kommentare

Hab grad die Access Log von Nginx durchgeforstet hier taucht ab und an folgendes auf: 185.4.227.194 05/Mar/2014:08:19:21 +0100 "GET ...

Windows Server
Lizenz bzw. Product key auslesen W2K8 R2
gelöst Frage von hesperWindows Server8 Kommentare

Morgen zusammen. Bei uns hat irgendjemand die Lizenz für einen W2k8 R2 verschusselt. Ich finde weder im VLSC noch ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 1 TagApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 TagWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 1 TagWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement16 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...