Batch - Probleme beim findstr, muss man das maskieren?
Guten Morgen an alle,
Ich bin gerade dabei die Proxyeinstellungen unserer Clients auszulesen, für den IE ist das ja auch kein problem, allerdings bereitet mir das ganze bei Mozilla Firefox einige Probleme.
Die Proxyeinstellungen von Firefox sind in der Datei %USERPROFILE%\Anwendungsdaten\Mozilla\Firefox\Profiles\* unter prefs.js gespeichert.
Ich bin jetzt soweit das ich die prefs.js in eine Variable speicher und diese dann auswerten will.
Dafür benutze ich folgende Zeilen:
als Ausgabe erhalte ich jetzt allerdings einmal die IP und einmal den Port, ich hätte allerdings gerne nur die IP.
Darum würde ich gernen nach "network.proxy.http" suchen.
Das funktionier aber nicht, weil er scheinbar Probleme mit den "" hat. Muss ich diese ausmaskieren? Wenn ja wie?
Oder kennt von euch jemand einen einfacheren Weg das ganze zu bewerkstellingen?
Danke im Vorraus
MfG Sebastian
Ich bin gerade dabei die Proxyeinstellungen unserer Clients auszulesen, für den IE ist das ja auch kein problem, allerdings bereitet mir das ganze bei Mozilla Firefox einige Probleme.
Die Proxyeinstellungen von Firefox sind in der Datei %USERPROFILE%\Anwendungsdaten\Mozilla\Firefox\Profiles\* unter prefs.js gespeichert.
Ich bin jetzt soweit das ich die prefs.js in eine Variable speicher und diese dann auswerten will.
Dafür benutze ich folgende Zeilen:
set ausgabe="C:\Freigabe\prefs.txt"
@for /F "tokens=2 delims= " %%i in ('type %ausgabe% ^| findstr /i "proxy.http"') do set "var=%%i"
echo %var%
als Ausgabe erhalte ich jetzt allerdings einmal die IP und einmal den Port, ich hätte allerdings gerne nur die IP.
Darum würde ich gernen nach "network.proxy.http" suchen.
Das funktionier aber nicht, weil er scheinbar Probleme mit den "" hat. Muss ich diese ausmaskieren? Wenn ja wie?
Oder kennt von euch jemand einen einfacheren Weg das ganze zu bewerkstellingen?
Danke im Vorraus
MfG Sebastian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 147888
Url: https://administrator.de/contentid/147888
Ausgedruckt am: 05.11.2024 um 14:11 Uhr
10 Kommentare
Neuester Kommentar
Hallo Sebastian,
Damit hast du deinen Teil zur Lösung deines Problems getan.
Falls hier jemand fragt, welche Ausgabe die Batch dir mitteilt, betrachte die Frage als reine Provokation.
Ob "proxy.http" oder "network.proxy.http" ist ###egal. Das Suchergebnis ist immer gleich.
Also suche z.B. nach "http_port" und schon hast das gewünschte.
TIP1: der Feldtrenner Leerzeichen ist Standard und muß nicht extra angegeben werden.
TIP2: sollten dich die Klammer und das Semikolon in %var% auch noch stören, ein ist hier hilfreich.
cu paulepank
Das funktionier aber nicht, weil
Für diese Fehlerbeschreibung kannst du dich schon mal grinsend zurücklehnen.Damit hast du deinen Teil zur Lösung deines Problems getan.
Falls hier jemand fragt, welche Ausgabe die Batch dir mitteilt, betrachte die Frage als reine Provokation.
Ob "proxy.http" oder "network.proxy.http" ist ###egal. Das Suchergebnis ist immer gleich.
Also suche z.B. nach "http_port" und schon hast das gewünschte.
TIP1: der Feldtrenner Leerzeichen ist Standard und muß nicht extra angegeben werden.
TIP2: sollten dich die Klammer und das Semikolon in %var% auch noch stören, ein
echo %var:~0,-2%
cu paulepank
Moin bioperodik,
vielleicht beantwortet das deine Frage bzw. deine richtige Vermutung:
[Anmerkung: Demo am CMD-Prompt. das ">" am Anfang einer Zeile NICHT mit eingeben, das ist die 2.Zeile meines Prompts.]
Die letzte FindStr-Variante wäre für dich die richtige.
Grüße
Biber
vielleicht beantwortet das deine Frage bzw. deine richtige Vermutung:
[Anmerkung: Demo am CMD-Prompt. das ">" am Anfang einer Zeile NICHT mit eingeben, das ist die 2.Zeile meines Prompts.]
(=12:12:18 D:\temp=)
>echo "Test1">d:\temp\test4findstr.txt
(=12:12:36 D:\temp=)
>echo Test1 ohne Anführungszeichen>>d:\temp\test4findstr.txt
(=12:12:47 D:\temp=)
>findstr /i "Test1" test4findstr.txt
"Test1"
Test1 ohne Anführungszeichen
## beide Zeilen werden ausgegeben - nicht erwünschtes Resultat
(=12:12:52 D:\temp=)
>findstr /i ""Test1"" test4findstr.txt
"Test1"
Test1 ohne Anführungszeichen
## beide Zeilen werden ausgegeben - nicht erwünschtes Resultat
(=12:13:00 D:\temp=)
>findstr /i "\"Test1\"" test4findstr.txt
"Test1"
## nur Zeile "Test" (in Anführungszeichen) wird ausgegeben
Grüße
Biber
Hallo,
Selbst wenn ich die Zeile so eingebe, wie du es geschrieben hast findet die korrekte Ausgabe statt.
Ich geh jetzt mal davon aus, daß die prefs.txt inhaltlich gleich der prefs.js ist.
Der Begriff wird immer gefunden. Das Problem liegt m.E. woanders
@Biber
hier muß nichts maskiert werden.
cu paulepank
Es gibt keine Ausgabe, die Batch wird einfach geschlossen.
Dann solltest du die Batch in der cmd starten um etwas zu sehen und / oder den Befehl pause einfügen und das @ entfernen.Selbst wenn ich die Zeile so eingebe, wie du es geschrieben hast findet die korrekte Ausgabe statt.
Ich geh jetzt mal davon aus, daß die prefs.txt inhaltlich gleich der prefs.js ist.
Der Begriff wird immer gefunden. Das Problem liegt m.E. woanders
@Biber
hier muß nichts maskiert werden.
cu paulepank
Beispiel:
Inhalt von prefs.txt
...
user_pref("network.proxy.http", "ich.bin.der.proxy");
user_pref("network.proxy.http_port", 4711);
...
Ausgabe:
C:\>set "var="ich.bin.der.proxy");"
C:\>set "var=4711);"
C:\>echo 4711
4711
C:\>pause
Drücken Sie eine beliebige Taste . . .
cu paulepank
Inhalt von prefs.txt
...
user_pref("network.proxy.http", "ich.bin.der.proxy");
user_pref("network.proxy.http_port", 4711);
...
set ausgabe="d:\prefs.txt"
for /F "tokens=2 delims= " %%i in ('type %ausgabe% ^| findstr /i ""network.proxy.http""') do set "var=%%i"
echo %var:~0,-2%
pause
Ausgabe:
C:\>set "var="ich.bin.der.proxy");"
C:\>set "var=4711);"
C:\>echo 4711
4711
C:\>pause
Drücken Sie eine beliebige Taste . . .
cu paulepank
Moin paulepank,
doch.
Bei deiner Demo bleibt nach der FOR-Anweisung nur die LETZTE Zeile erhalten.
Dreh doch die Zeilen-Reihenfolge mal um in deiner prefs.txt...
Grüße
Biber
doch.
>findstr /i ""network.proxy.http"" prefs.txt
"network.proxy.http_port", 4711
"network.proxy.http", "ich.bin.der.proxy"
(=13:25:37 D:\temp=)
>findstr /i "\"network.proxy.http"\" prefs.txt
"network.proxy.http", "ich.bin.der.proxy"
(=13:25:47 D:\temp=)
Bei deiner Demo bleibt nach der FOR-Anweisung nur die LETZTE Zeile erhalten.
Dreh doch die Zeilen-Reihenfolge mal um in deiner prefs.txt...
Grüße
Biber
Hallo Biber,
jaein,
bei meinen Testdaten ist die Reihenfolge anders.
unabhängig davon werden beide Zeilen gefunden (auch ohne Maskierung), es wird nur die falsche ausgewertet.
Deshalb habe ich ja Eingangs geschrieben er soll gleich nach http_port suchen.
Dann ist es eindeutig auch ohne Maskierung und die Reihenfolge der Zeilen ist auch wurscht.
cu paulpank
jaein,
bei meinen Testdaten ist die Reihenfolge anders.
unabhängig davon werden beide Zeilen gefunden (auch ohne Maskierung), es wird nur die falsche ausgewertet.
Deshalb habe ich ja Eingangs geschrieben er soll gleich nach http_port suchen.
Dann ist es eindeutig auch ohne Maskierung und die Reihenfolge der Zeilen ist auch wurscht.
cu paulpank