cool400
Goto Top

Nur den Teil eines Registry-Wertes per Batch auslesen?

Hallo,

ich habe leider mal wieder ein für mich schier unlösbares Problem face-sad

Ich habe einen Registry-Eintrag des Wertes "ProxyServer" im Format

"http=mein-proxy.test.de:80;https=mein-proxy.test.de:80;ftp=ftp-proxy.test.de:80;gopher=mein-proxy.test.de:80"

unter HKEY_USERS\S-1-5-21-1289117853-911153512-630672053-161577\Software\Microsoft\Windows\CurrentVersion\Internet Settings

Nun brauche ich in einer Variable den Teil "mein-proxy.test.de:80" - wie kann ich das bewerkstelligen?

Ich bin für jede Hilfe wirklich sehr dankbar!!!

Viele Grüße

cool400

Content-Key: 90477

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

Printed on: April 25, 2024 at 16:04 o'clock

Member: Biber
Biber Jun 24, 2008 at 04:58:22 (UTC)
Goto Top
Moin cool400,

würde ich zwar mit einem Oneliner abfackeln, aber gedanklich in mehrere Schritte zerlegen.

In etwa so:
...
Set regkey="HKCU\Software\Microsoft\Windows\Currentversion\Internet Settings"  
:: Schritt 1 die ganze Zeile auslesen
For /f "tokens=3" %%i in ('reg query %regkey% /v "ProxyServer"^|find /i "Proxyserver"') do set  "alleProxies=%%i"  
:: in %alleProxies steht jetzt der ganze Wert... mit Semikolon als Trennzeichen
:: Optimistische Annahme: es stehen IMMER 4 Werte drin in 4x2 Tokens
for /f "delims==; tokens=1-8" %%a in ("%alleproxies%") do (  
      If [%%a] NEQ  Set "%%aProxy=%%b"  
      If [%%c] NEQ  Set "%%cProxy=%%d"  
      If [%%e] NEQ  Set "%%eProxy=%%f"  
      If [%%g] NEQ  Set "%%gProxy=%%h"  
)
:: Ergebnis - (bis zu) 4 Variablen
:: %HttpProxy% ==> mein-proxy.test.de:80
:: %HttpsProxy% ==> (der Wert hinter "Https=")  
:: %FTPProxy% ==> (der Wert hinter "FTP=")  
:: %gopherProxy% ==> (der Wert hinter "gopher=")  
:: Und in %HttpProxy% steht Dein gesuchter Wert
[ungetestete, wenn auch tippfehlerbereinigte Skizze, siehe unten]

Grüße
Biber
Member: Biber
Biber Jun 27, 2008 at 06:06:13 (UTC)
Goto Top
Moin cool400,
Ich bin für jede Hilfe wirklich sehr dankbar!!!
Ich hätte da einen Tipp, wie Du das in diesem Beitrag visualisieren könntest....

Grüße
Biber
Member: cool400
cool400 Jun 27, 2008 at 08:32:06 (UTC)
Goto Top
Entschuldige bitte...Du hast natürlich Recht!

Biber, vielen Dank für Deine super-schnelle und sehr ausführliche Hilfe.

Eine Frage nur: fehlt hier ein Anführungszeichen am Ende?

For /f "tokens=3" %%i in ('reg query %regkey% /v "ProxyServer"^|find /i "Proxyserver"') do set  "alleProxies=%%i  

Ich habe am Mittwoch mal probiert, das Skript umzusetzen, muss es aber mangels eigenem Proxy noch einmal von jemand anderem testen lassen!

Vielen Dank nochmal - ich melde mich, sobald ich alles in Ruhe ausprobiert habe.

Viele Grüße

cool400
Member: Biber
Biber Jun 27, 2008 at 08:53:14 (UTC)
Goto Top
Moin cool400,

danke Dir für die ebenfalls superschnelle Rückmeldung.

ja, an der o.a. Stelle fehlt natürlich in der Tat ein Anführungszeichen.
Ich trage es oben im Schnipsel nach.

Und: Du kannst es ja durchaus selbst testen, wenn Du für 10 Minuten Testdauer diesen Registry-Eintrag anlegst (oder einen Vergleichbaren).

Schönes Wochenende
Biber
Member: cool400
cool400 Jun 29, 2008 at 11:06:44 (UTC)
Goto Top
Hi Biber,

ich habe anscheinend noch ein weiteres Problem face-sad

Dieser Teil Deines Skripts scheint bei mir nicht zu funktionieren:

for /f "delims==; tokens=1-8" %a in ("%alleproxies%") do (   
      If [%%a] NEQ  Set "%%aProxy=%%b"   
      If [%%c] NEQ  Set "%%cProxy=%%d"   
      If [%%e] NEQ  Set "%%eProxy=%%f"   
      If [%%g] NEQ  Set "%%gProxy=%%h"   
) 

(BTW, Du hattest bei ...("%alleproxies%")... das "e" von "alle" vergessen, hab ich entsprechend bei mir verbessert)

Bis zu diesem Codeteil klappt das Auslesen, in der Variable alleproxies steht nun

http=mein-proxy.test.de:80;https=mein-proxy.test.de:80;ftp=ftp-proxy.test.de:80;gopher=mein-proxy.test.de:80

Ich habe hinter Deinem obigen Code ein "pause"-Tag eingefügt und wollte per ECHO-Befehl die einzelnen Variablen zum Überprüfen ausgeben lassen - jedoch wird das Skript ohne Ausgabe und ohne Pause beendet! Irgendwo scheint also ein Fehler zu sein...

Hast Du eine Idee, was falsch läuft?

Viele Grüße und schönen Sonntag

cool400

P.S. Fiiiiiiiiiiiiiiiiiiiiiiiiinale...ooooooooooooooohooooooooooo face-smile
Member: Biber
Biber Jun 29, 2008 at 13:54:08 (UTC)
Goto Top
Moin cool400,

wenn ich den Schnipsel nun vor mir sehe, dann fällt mir auf, dass die FOR/F-Laufvariable fälschlicherweise von mir als %a statt %%a geschrieben wurde. Sorry.

Ich ändere es oben im Schnipsel. Ist dennoch immer noch ungetestet von mir.

Grüße
Biber

P.S. Mein Tipp für heute abend: klarer 1:0-Sieg nach Elfmeterschießen.
Member: cool400
cool400 Jun 29, 2008 at 14:41:57 (UTC)
Goto Top
Das war's!!!!!!!!!!!!!!!!! face-smile face-smile face-smile

Super, vielen Dank für Deine Hilfe!

Jetzt werde ich noch einen "echten" Test machen mit jemandem, der einen Proxy benutzt - und natürlich bei evtl. Veröffentlichung meines Skripts Credits für Dich mit angeben face-wink

Viel Spaß heute Abend und Danke

cool400