Batch - Problem mit Anführungszeichen
Ich habe ein Problem mit Anführungszeichen / Gänsefüßen
Hi,
in meiner Batch definiere ich einen String in einer Variable
Leider gibt es ein Problem mit den Sonderzeichen <">"
Weiß jemand wie ich die Zeichen unterbringe, ohne dass ein Fehler auftritt?
Freue mich über jede Antwort.
Liebe Grüße
Tray
Hi,
in meiner Batch definiere ich einen String in einer Variable
Set var="<service="ko">"
Weiß jemand wie ich die Zeichen unterbringe, ohne dass ein Fehler auftritt?
Freue mich über jede Antwort.
Liebe Grüße
Tray
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 165318
Url: https://administrator.de/forum/batch-problem-mit-anfuehrungszeichen-165318.html
Ausgedruckt am: 22.12.2024 um 23:12 Uhr
22 Kommentare
Neuester Kommentar
Hallo @tray-park,
Ich kann bei der Zuweisung keine Fehler finden.
Ist richtig.
Ebenso:
Dein Problem liegt wahrscheinlich bei der weiteren Verwendung der Variable. Da musst du einfach die Zeichen mit einem Caret (^) maskieren. Aufgrund des etwas eigenartigen Verhaltens der Shell musst du es so machen:
Gruß
Snow
Ich kann bei der Zuweisung keine Fehler finden.
U:\>set var="<server="ko">"
U:\>echo %var%
"<server="ko">"
Ebenso:
U:\>echo set var="<server="ko">">vartest.bat
U:\>type vartest.bat
set var="<server="ko">"
U:\>set "var="
U:\>vartest.bat
U:\>set var="<server="ko">"
U:\>echo %var%
"<server="ko">"
Dein Problem liegt wahrscheinlich bei der weiteren Verwendung der Variable. Da musst du einfach die Zeichen mit einem Caret (^) maskieren. Aufgrund des etwas eigenartigen Verhaltens der Shell musst du es so machen:
set var="^<server=^"ko^^"^>"
Gruß
Snow
moin,
Gruß
N:\>set "otto=<hallo>"
N:\>set otto
otto=<hallo>
N:\>echo %otto%
Syntaxfehler.
N:\>echo "%otto%"
"<hallo>"
N:\>set "otto=<hallo=echo">"
Das System kann den angegebenen Pfad nicht finden.
N:\>set "otto=<hallo=echo"">""
N:\>echo "%otto%"
"<hallo=echo"">""
Gruß
Zitat von @tray-park:
Lieder steht in der string Variable im findstr Kommando dann "^<server status=^"ok" />"
Also so langsam denke ich wirklich, du machst das extra...Lieder steht in der string Variable im findstr Kommando dann "^<server status=^"ok" />"
Is doch nicht so schwer, oder? Alle Umleitungszeichen und Anführsstriche innerhalb der variable werden mit einem ^ maskiert. Und dann funktioniert es.
Ist es so schwer, die erste Zeile aus dem letzten Stück code zu kopieren??
moin,
ich hab dir das da oben doch hingemalt... (Unterschied zwischen echo und set)
Und warum so kompliziert?
Achtung ungetestet und das einzige\ ist eine Pipe - die kann mein Rechner nicht..
<edit> ich war mal in meiner Sonderzeichensammlung...</edit>
Gruß
ich hab dir das da oben doch hingemalt... (Unterschied zwischen echo und set)
Und warum so kompliziert?
Achtung ungetestet und das einzige\ ist eine Pipe - die kann mein Rechner nicht..
<edit> ich war mal in meiner Sonderzeichensammlung...</edit>
IF not EXIST "status.xml" echo nix zum testen da & goto somewhere_over_the_rainbow
findstr /i "status" "status.xml" | findstr "ok" && echo alles im Lot aufm Boot
findstr /i "status" "status.xml" | findstr "error" && echo maschiin gabudd
goto eof
:somewhere_over_the_rainbow
pause
Gruß
moin,
So siehts aus, wenn nur <4Till status="ok" > da steht
...und so wenn auch <server status="error" /> da steht:
so, wenn die beiden in der ini stehen:
Das Script, was das macht, - bzw. die Änderung zum ersten ungetesteten Schnippsel - siehst du da oben 3*
Und falls es auch <4Till status="error" > gibt - dann machs so:
Wenn gar kein Status da ist - mußt du doch erst recht die Ohren spitzen und die Augen scharf stellen.
Gruß
Zitat von @tray-park:
Määp.
War wohl doch nix. In der xml gibt es einen weiteren Tag, der Probleme macht. Indem kann nämlich auch
<4Till status="ok" >
Dieser interessiert mich aber nicht. Nur den server status="ok" kann ich gebrauchen.
Steht nun aber im 4Till ein "ok" und im server status ein "error" ist trotzdem alles in Ordnung.
Schade.
Schade?Määp.
War wohl doch nix. In der xml gibt es einen weiteren Tag, der Probleme macht. Indem kann nämlich auch
<4Till status="ok" >
Dieser interessiert mich aber nicht. Nur den server status="ok" kann ich gebrauchen.
Steht nun aber im 4Till ein "ok" und im server status ein "error" ist trotzdem alles in Ordnung.
Schade.
Schade finde ich
- wenn man(n) alles selber machen muß
- Wenn man(n) dann noch alles tröpfchenweise mitkriegt.
DEMO an der Notbüxse - zur einfachen änderung für mich zwischen den einzelnen Dempläufen keine .xml sondern eine ini
C:\script\status>C:\script\status\status.cmd
C:\script\status>IF not EXIST "status.ini" echo nix zum testen da & goto somewhere_over_the_rainbow
C:\script\status>findstr /i /c:"<server status" "status.ini" | findstr "ok" && echo alles im Lot aufm Boot
C:\script\status>findstr /i "status" "status.ini" | findstr "error" && echo maschiin gabudd
C:\script\status>goto eof
C:\script\status>
So siehts aus, wenn nur <4Till status="ok" > da steht
...und so wenn auch <server status="error" /> da steht:
C:\script\status>C:\script\status\status.cmd
C:\script\status>IF not EXIST "status.ini" echo nix zum testen da & goto somewhere_over_the_rainbow
C:\script\status>findstr /i /c:"<server status" "status.ini" | findstr "ok" && echo alles im Lot aufm Boot
C:\script\status>findstr /i "status" "status.ini" | findstr "error" && echo maschiin gabudd
<server status="error" />
maschiin gabudd
C:\script\status>goto eof
C:\script\status>
<4Till status="ok" >
<server status="ok" />
<server status="ok" />
C:\script\status>C:\script\status\status.cmd
C:\script\status>IF not EXIST "status.ini" echo nix zum testen da & goto somewhere_over_the_rainbow
C:\script\status>findstr /i /c:"<server status" "status.ini" | findstr "ok"&& echo alles im Lot aufm Boot
<server status="ok" />
alles im Lot aufm Boot
C:\script\status>findstr /i "status" "status.ini" | findstr "error" && echo maschiin gabudd
C:\script\status>goto eof
C:\script\status>
Das Script, was das macht, - bzw. die Änderung zum ersten ungetesteten Schnippsel - siehst du da oben 3*
Und falls es auch <4Till status="error" > gibt - dann machs so:
Wenn gar kein Status da ist - mußt du doch erst recht die Ohren spitzen und die Augen scharf stellen.
IF not EXIST "status.ini" echo nix zum testen da & goto somewhere_over_the_rainbow
findstr /i /c:"<server status" "status.ini" | findstr "ok" && echo alles im Lot aufm Boot
findstr /i /c:"<server status" "status.ini" | findstr "error" && echo maschiin gabudd
goto eof
:somewhere_over_the_rainbow
pause
:eof
Gruß