batch-file
Sonderzeichen entkommen
Suche…
Einführung
In allen cmd.exe
und DOS
Versionen sind einige Zeichen für bestimmte Zwecke reserviert (z. B. Befehlsumleitung). In diesem Thema wird beschrieben, wie Sie die Sonderzeichen ohne Probleme verwenden können.
Flucht mit Caret (^)
Die meisten Sonderzeichen können mit dem Einfügemarke ( ^
) maskiert werden. Schauen Sie sich das folgende Beispiel an.
echo > Hi
echo ^> Hi
Dieser erste Befehl würde nicht > Hi
ausgeben, da >
ein Sonderzeichen ist, was bedeutet, dass die Ausgabe in eine Datei umgeleitet wird. In diesem Fall heißt die Datei "Hi".
Doch im zweiten Befehl, > Hi
würde ohne Frage ausgegeben werden , da die Caretzeichen ( ^
) die sagen >
zu , die als „umleiten Ausgabe in Datei“ Stopp - Befehls, jetzt >
sind nur ein normaler Charakter.
Hier ist eine Liste von Sonderzeichen, die geschützt werden können (von Rob van der Woudes Seite übernommen und bearbeitet).
Charakter | Ergebnis entkommen | Bemerkungen |
---|---|---|
^ | ^^ | |
& | ^ & | |
< | ^ < | |
> | ^> | |
| | ^ | | |
\ | ^ \ | |
! | ^^! | Nur erforderlich, wenn DelayedExpansion aktiviert ist |
Dem Caret entkommen
Carets können auf die Flucht anderer Carets gestapelt werden. Beachten Sie das folgende Beispiel.
Eingang | Ausgabe |
---|---|
^ & | & |
^ ^ ^ & | ^ & |
^ ^ ^ ^ ^ & | ^^ & |
Hinweis: Die fettgedruckten Carets werden nicht verwendet.
Sicherheitsproblem
Ein bisschen abseits hier, aber das ist sehr wichtig! Eine ungewollte Caret-Flucht am Ende der Datei kann zu einem Speicherverlust führen!
any-invalid-command-you-like-here ^
Dieser Befehl würde den gesamten Speicher verlieren und das System vollständig unbrauchbar machen ! Sehen Sie hier für weitere Informationen.
Sonderzeichen FIND und FINDSTR
In find
und findstr
gibt es einige Sonderzeichen, die etwas Vorsicht erfordern.
FINDEN
Es gibt nur ein Zeichen, für das ein Escapezeichen erforderlich ist: "
Anführungszeichen. Um es zu umgehen, fügen Sie einfach ein weiteres Anführungszeichen hinzu. "
Wird also zu ""
. Ziemlich einfach.
FINDSTR
Findstr
viele Charaktere, die zu entkommen sind, seien Sie also bitte vorsichtig. Mit \
können Sonderzeichen ausgeblendet werden. Hier ist eine Liste von Sonderzeichen, die es zu umgehen gilt
Charakter | Ergebnis entkommen |
---|---|
\ | \\ |
[ | \ [ |
] | \] |
" | \ " |
. | \. |
* | \ * |
? | \? |
FOR / F Sonderzeichen
FOR / F
In einer FOR /F
Anweisung müssen einige Zeichen maskiert werden, hier eine Liste (von Rob van der Woudes Seite übernommen und bearbeitet)
Charakter | Ergebnis entkommen | Bemerkungen |
---|---|---|
' | ^ ' | usebackq nur in FOR /F -Klammern benötigt, sofern nicht usebackq angegeben ist. |
` | ^ ` | usebackq nur in FOR /F -Klammern benötigt, wenn usebackq angegeben ist |
. | ^, | ┒ |
; | ^; | ┃ |
= | ^ = | ┣ Muss in FOR /F -Klammern mit Escapezeichen versehen werden, auch wenn er in doppelten Anführungszeichen steht |
( | ^ ( | ┃ |
) | ^) | ┙ |
Sonderzeichen
Hier finden Sie eine Liste anderer Sonderzeichen, für die eine Flucht erforderlich ist / ist, die oben jedoch nicht erwähnt wurde.
Charakter | Ergebnis entkommen | Bemerkungen |
---|---|---|
% | %% | |
[LF] | ^ [LF] | Dieser Trick wird von Mark Stang in der alt.msdos.batch . |
Flucht durch die Pipeline
Wenn es einen Ausdruck mit einer Pipe gibt, startet cmd
zwei Threads auf beiden Seiten der Pipe, und der Ausdruck wird zweimal analysiert (für jede Seite der Pipe), sodass die Carets verdoppelt werden müssen.
Auf der linken Seite:
echo ^^^&|more
Auf der rechten Seite:
break|echo ^^^&