batch-file
Ontsnappen aan speciale tekens
Zoeken…
Invoering
In alle cmd.exe
en DOS
versies zijn sommige tekens gereserveerd voor specifiek gebruik (bijvoorbeeld opdrachtomleiding). In dit onderwerp wordt besproken hoe u de speciale tekens zonder problemen kunt gebruiken.
Ontsnappen met behulp van de cursor (^)
De meeste speciale tekens kunnen worden ontsnapt met behulp van het kruisje ( ^
). Bekijk het volgende voorbeeld.
echo > Hi
echo ^> Hi
Het eerste commando zou niet uitgevoerd > Hi
omdat >
is een speciaal karakter, welke middelen omleiden naar een bestand gekopieerd. In dit geval heet het bestand "Hallo"
In het tweede commando zou > Hi
probleemloos worden uitgevoerd, omdat de caret ( ^
) de >
vertelt om te stoppen met functioneren als "uitvoer naar bestand" commando, nu >
is gewoon een normaal karakter.
Hier is een lijst met speciale tekens waaraan kan worden ontsnapt (genomen en bewerkt vanaf de pagina van Rob van der Woude)
Karakter | Ontsnapt resultaat | Opmerkingen |
---|---|---|
^ | ^^ | |
& | ^ & | |
< | ^ < | |
> | ^> | |
| | ^ | | |
\ | ^ \ | |
! | ^^! | Alleen vereist wanneer Vertraagde uitbreiding is ingeschakeld |
Ontsnappen aan de caret
Carets kunnen worden gestapeld om andere carets te ontsnappen, bekijk het volgende voorbeeld.
Invoer | uitgang |
---|---|
^ & | & |
^ ^ ^ & | ^ & |
^ ^ ^ ^ ^ & | ^^ & |
Opmerking: de vetgedrukte carets zijn ontsnapt.
Beveiligingsprobleem
Een beetje off topic hier, maar dit is erg belangrijk! Een ongewenste ontsnapping aan het einde van het bestand kan een geheugenlek veroorzaken!
any-invalid-command-you-like-here ^
Deze opdracht zou al het geheugen lekken, waardoor het systeem volledig onbruikbaar wordt ! Kijk hier voor meer informatie.
FIND en FINDSTR speciale tekens
In find
en findstr
zijn er enkele speciale tekens die enige voorzichtigheid vereisen.
VIND
Er is maar één teken dat moet ontsnappen: "
quote. Om eraan te ontsnappen, voeg je er gewoon een ander quote aan toe. Dus "
wordt ""
. Best simpel.
FINDSTR
Findstr
heeft veel personages om te ontsnappen, dus wees voorzichtig. Met \
kunnen we aan speciale tekens ontsnappen. Hier is een lijst met speciale tekens om te ontsnappen
Karakter | Ontsnapt resultaat |
---|---|
\ | \\ |
[ | \ [ |
] | \] |
" | \" |
. | \. |
* | \ * |
? | \? |
FOR / F speciale tekens
VOOR / F
In een FOR /F
statement moeten sommige karakters ontsnappen, hier een lijst (overgenomen en bewerkt van de pagina van Rob van der Woude)
Karakter | Ontsnapt resultaat | Opmerkingen |
---|---|---|
' | ^' | Alleen nodig tussen de haakjes van FOR /F , tenzij usebackq is opgegeven. |
` | ^ ` | Alleen nodig tussen de haakjes van FOR /F , wanneer usebackq is opgegeven |
, | ^, | ┒ |
; | ^; | ┃ |
= | ^ = | ┣ Moet ontsnapt zijn tussen de haakjes van FOR /F , zelfs als deze tussen dubbele aanhalingstekens staat |
( | ^ ( | ┃ |
) | ^) | ┙ |
Extra speciale tekens
Hier is een lijst met andere speciale tekens, waarvoor een of meer ontsnappingen nodig zijn, maar die hierboven niet worden vermeld.
Karakter | Ontsnapt resultaat | Opmerkingen |
---|---|---|
% | %% | |
[LF] | ^ [LF] | Deze truc wordt gemeten door Mark Stang in de alt.msdos.batch . |
Ontsnappen door de pijpleiding
Als er een uitdrukking met een pijp is, begint de cmd
twee draden aan beide zijden van de pijp en wordt de uitdrukking twee keer ontleed (voor elke zijde van de pijp), dus de carets moeten worden verdubbeld.
Aan de linkerkant:
echo ^^^&|more
Aan de rechterkant:
break|echo ^^^&