batch-file
Ucieczka ze znaków specjalnych
Szukaj…
Wprowadzenie
We wszystkich wersjach cmd.exe
i DOS
niektóre znaki są zarezerwowane do określonego zastosowania (np. Przekierowanie poleceń). W tym temacie omówimy, jak używać znaków specjalnych bez problemów.
Ucieczka za pomocą karetki (^)
Większość znaków specjalnych można uciec za pomocą karetki ( ^
). Spójrz na następujący przykład.
echo > Hi
echo ^> Hi
To pierwsze polecenie nie wypisuje > Hi
ponieważ >
jest znakiem specjalnym, co oznacza przekierowanie wyjścia do pliku. W tym przypadku plik ma nazwę „Cześć”
Jednak w drugim poleceniu > Hi
zostanie wypisane bez żadnego problemu, ponieważ daszek ( ^
) każe >
przestać działać jako polecenie „przekieruj wyjście do pliku”, teraz >
jest po prostu normalnym znakiem.
Oto lista znaków specjalnych, które można uciec (wzięte i edytowane ze strony Roba van der Woude'a)
Postać | Wynik ucieczki | Uwagi |
---|---|---|
^ | ^^ | |
I | ^ I | |
< | ^ < | |
> | ^> | |
| | ^ | | |
\ | ^ \ | |
! | ^^! | Wymagane tylko, gdy włączone jest opóźnienie rozszerzenia |
Ucieczka z karetki
Karetki można układać w stosy, aby uciec przed innymi karetami, rozważ następujący przykład.
Wejście | Wynik |
---|---|
^ I | I |
^ ^ ^ I | ^ I |
^ ^ ^ ^ ^ & | ^^ i |
Uwaga: karety w pogrubionej formie są usuwane.
Problem bezpieczeństwa
Nieco tutaj, ale to bardzo ważne! Niechciana funkcja daszka na końcu pliku może spowodować wyciek pamięci!
any-invalid-command-you-like-here ^
To polecenie spowodowałoby wyciek całej pamięci, czyniąc system całkowicie bezużytecznym ! Zobacz tutaj, aby uzyskać więcej informacji.
ZNAJDŹ i FINDSTR Znaki specjalne
W find
i findstr
znajduje się kilka znaków specjalnych, które wymagają ostrożności.
ODNALEŹĆ
Jest tylko jedna postać, która wymaga ucieczki - "
cytat. Aby uciec, po prostu dodaj kolejny cytat obok niej. Tak więc "
staje się ""
. Dość proste.
FINDSTR
Findstr
ma wiele postaci do ucieczki, więc bądź bardzo ostrożny. Używając \
, możemy uciec od znaków specjalnych. Oto lista znaków specjalnych do ucieczki
Postać | Wynik ucieczki |
---|---|
\ | \\ |
[ | \ [ |
] | \] |
„ | \ ” |
. | \. |
* | \ * |
? | \? |
Znaki specjalne FOR / F
FOR / F
W instrukcji FOR /F
niektóre znaki wymagają ucieczki, tutaj lista (pobrana i edytowana ze strony Roba van der Woude'a)
Postać | Wynik ucieczki | Uwagi |
---|---|---|
„ | ^ ' | Potrzebne tylko w nawiasach FOR /F , chyba że usebackq . |
` | ^ ` | Potrzebne tylko w nawiasach FOR /F , gdy usebackq |
, | ^, | ┒ |
; | ^; | ┃ |
= | ^ = | ┣ Należy wstawić znaki ucieczki w nawiasach FOR /F , nawet jeśli jest to cudzysłów |
( | ^ ( | ┃ |
) | ^) | ┙ |
Dodatkowe znaki specjalne
Oto lista innych znaków specjalnych, które wymagają / mogą potrzebować ucieczki, ale nie zostały wymienione powyżej.
Postać | Wynik ucieczki | Uwagi |
---|---|---|
% | %% | |
[LF] | ^ [LF] | Trik ten jest omawiany przez Marka Stanga w alt.msdos.batch dyskusyjnej alt.msdos.batch . |
Ucieczka przez rurociąg
Gdy istnieje wyrażenie z potokiem, cmd
rozpoczyna dwa wątki po obu stronach potoku, a wyrażenie jest analizowane dwukrotnie (dla każdej strony potoku), więc należy podwoić liczbę znaków.
Po lewej stronie:
echo ^^^&|more
Po prawej stronie:
break|echo ^^^&