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

REG-DWORD-Wert aus Registry auslesen und mittels IF-Abfrage prüfen?

Frage Entwicklung Batch & Shell

Mitglied: cool400

cool400 (Level 1) - Jetzt verbinden

23.05.2008, aktualisiert 29.05.2008, 14803 Aufrufe, 5 Kommentare

Hallo,

ich möchte gerne über eine Batch-Datei auslesen, ob in den Internet-Einstellungen ein Proxy gesetzt ist und über eine IF-Abfrage einen Paramter setzen lassen - was mir partout nicht gelingt.

Dieses ist die Abfrage, die anscheinend zum gewünschten Ergebnis führt:
01.
FOR /F "SKIP=2 USEBACKQ TOKENS=3 DELIMS=    " %%i IN (`REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable`) DO SET proxyenable=%%i
Der Wert ProxyEnable in der Registry ist anscheinend vom Typ REG_DWORD und enthält entweder "0x00000000" oder "0x00000001", was in der Variable proxyenable als "0x0" oder "0x1" gespeichert wird (das sagt jedenfalls eine ECHO %proxyenable%-Ausgabe).

Nun versuche ich, den Inhalt von proxyenable mittels folgender IF-Abfrage zu prüfen:
01.
IF %proxyenable%=="0x1" SET useproxy="--proxy=on"
Aber anscheinend mache ich bei dieser Abfrage etwas falsch, denn die Variable useproxy erhält niemals den Wert "--proxy=on"

Was mache ich bei dieser Abfrage falsch?

Viele Grüße

cool400
Mitglied: bastla
23.05.2008 um 19:36 Uhr
Hallo cool400 und willkommen im Forum!

So sollte es klappen:
01.
FOR /F "SKIP=2 USEBACKQ TOKENS=3" %%i IN (`REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable`) DO SET "proxyenable=%%i" 
02.
IF "%proxyenable%"=="0x1" SET useproxy="--proxy=on"
Kurze Erklärung: Wenn Du "DELIMS" nicht angibst, wird defaultmäßig bei Blank UND Tab getrennt - da die Ausgabe von "REG QUERY" durch Tabs getrennt ist, funktioniert dann die Zerlegung.

Da aber Deine Frage lautete "Was mache ich bei dieser Abfrage falsch?" auch dazu noch eine Antwort: Wenn Du den Ausdruck rechts vom Vergleichsoperator (hier "==") in Anführungszeichen einschließt, musst Du es auch links tun ...

Grüße
bastla
Bitte warten ..
Mitglied: cool400
23.05.2008 um 21:36 Uhr
Hallo bastla,

nachdem ich bereits etwas in diesem Forum mitgelesen habe, habe ich mir fast gedacht, dass Du (als Erster) die Antwort weißt
Vorweg: es klappt *g* Super...vielen Dank!!!

Nun ein paar Fragen dazu: ich kann anscheinend auch überall die Anführungszeichen weglassen, richtig? Das Skript scheint damit auch zu laufen. Oder gibt es irgendwelche Vor-/Nachteile, ob ich die Abfrage mit bzw. ohne Quotes mache?

Dann würde mich interessieren, wie Du die Codebox hinbekommst? Anscheinend gibt es in diesem Forum keinen TAG-Editor. Gefunden!!!

01.
So sollte es klappen :-)
Allerdings wäre ein TAG-Editor schon schöner

Und zuletzt: funktioniert Deine Registry-Abfrage für (nahezu) jegliche zu erwartende Werte? Ich bastle öfter mit Batch-Dateien rum, habe jedoch wohl das, was man "gefährliches Halbwissen" nennt Daher komme ich immer wieder an den Punkt, wo ich Werte aus der Registry auslesen und in Variablen schreiben muss...und immer wieder bastel ich an genau dieser Abfrage rum! Von daher wäre es toll zu wissen, dass ich mit Deiner Methode so gut wie alle Werte auslesen kann.
Mein Problem ist halt, dass ich immer wieder irgendwo Codeschnipsel dazu finde, jedoch gar nicht genau weiß, was diese eigentlich bedeuten (SKIP, USEBACKQ, TOKEN, IN, %%i, %%A, %%B usw.)!

Vielen Dank für Deine Hilfe und einen schönen Abend

cool400
Bitte warten ..
Mitglied: bastla
23.05.2008 um 23:08 Uhr
Hallo cool400!

nachdem ich bereits etwas in diesem Forum mitgelesen habe, habe ich mir fast gedacht, dass Du (als Erster) die Antwort weißt
Gewusst hätten das sicher auch andere, ich bin nur anscheinend zu oft hier. Aber jedenfalls: Danke für das in mich gesetzte Vertrauen.

ich kann anscheinend auch überall die Anführungszeichen weglassen, richtig?
Nahezu überall - beim Reg-Pfad mit enthaltenen Leerzeichen brauchst Du sie auf jeden Fall. Ansonsten setze ich grundsätzlich eher zu viele als zu wenig Anführungszeichen (denn schaden können sie eigentlich nur in Ausnahmefällen).

Oder gibt es irgendwelche Vor-/Nachteile, ob ich die Abfrage mit bzw. ohne Quotes mache?
Der Vorteil ist aus meiner Sicht die genauere Kontrolle über Beginn und Ende eines Strings ...

Und zuletzt: funktioniert Deine Registry-Abfrage für (nahezu) jegliche zu erwartende Werte?
Etwas verallgemeinern könntest Du sie noch so:
01.
for /f "skip=4 tokens=2*" %%i in ('reg query ....') do set "Wert=%%j"
In dieser Form kann der Wert auch aus mehreren (durch Leerzeichen getrennten) Teilen bestehen (zB bei REG_SZ), da alles nach dem zweiten Teil der relevanten Zeile in der Ausgabe von "reg query" als "Wert" verwendet wird. Das Überspringen auch der ersten 4 Zeilen des Abfrageergebnisses (mit "skip=4") bringt vermutlich nur einen kaum messbaren Performancegewinn ...

Die Erklärung zu "skip" etc findest Du übrigens mit "for /?".

Grüße
bastla
Bitte warten ..
Mitglied: Biber
26.05.2008 um 08:59 Uhr
Moin cool400,

gehe ich Recht in der Annahme, dass dieser Beitrag damit hinreichend beantwortet ist und nur noch ein Grüner Haken von Dir fehlt?

Grüße
Biber
Bitte warten ..
Mitglied: cool400
29.05.2008 um 17:45 Uhr
Hi Biber,

Du hast recht - hab den grünen Haken mal eben gesetzt

Vielen Dank für die tolle und schnelle Hilfe hier!

Viele Grüße

cool400
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Wie stellt man eine IF-Abfrage für einen DWORD Wert eines Registryeintrags in einem Batch Skript?
Frage von paupau90Batch & Shell2 Kommentare

Hallo, ich will in einem Batch Skript eine IF-Abfrage für einen DWORD Wert eines Registrieintrags starten. Wie mache ich ...

Windows 7
Reg dword ändern
Frage von PeterMoWindows 72 Kommentare

Wie bekomme ich den reg_dword WERT von 0x00000000 (0) in 00000003 geändert ?

Windows Server
SCCM2012 Abfrage eines Registry Wertes
gelöst Frage von busteronWindows Server5 Kommentare

Hallo an die Gemeinschaft, ich hänge momentan an ein Problem wo ich gerade nicht weiter weiß. Weiß jemand ob ...

Batch & Shell
Powershell: Wert aus Registry auslesen und mit vorhandenem Wert vergleichen
gelöst Frage von BrowserlauserBatch & Shell5 Kommentare

Hallo, ich stehe vor folgendem Problem: Ich möchte per Powershell aus der Registry einen bestimmten Wert auslesen. Beispiel: in ...

Neue Wissensbeiträge
Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 28 MinutenSicherheit

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Sicherheit

Meltdown und Spectre: Die machen uns alle was vor

Information von Frank vor 52 MinutenSicherheit9 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Microsoft

Update KB4073578 für AMD CPU (Spectre und Meltdown Lücke)

Information von sabines vor 7 StundenMicrosoft

Wegen Problemen (BOSD, nicht startende PCs) wurde das Update KB4056897 und KB4056894 für AMD CPUs zurückgezogen. Dieses Update KB4073578 ...

Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 20 StundenMac OS X4 Kommentare

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Heiß diskutierte Inhalte
Batch & Shell
Anmeldevorgang für Informatikraum (Schule) unter Windows
gelöst Frage von IngenieursBatch & Shell27 Kommentare

Hey zusammen, ich werde in naher Zukunft den Informatik Raum meiner jetzigen Schule von dem aktuellen Betreiber übernehmen (Vertrag ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von 92943Windows 1025 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
Frage von Windows10GegnerNetzwerkgrundlagen18 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...