2011-06-29 5 views
7

trochę podchwytliwe. Jak mogę poprawnie uniknąć następujących w pliku wsadowym?Uciekając plik wsadowy echo, który rozpoczyna się ukośnikiem i znakiem zapytania

echo /? display this help text 

Ta szczególna kombinacja znaków jest traktowana jako "ECHO /?" polecenie:

C:\Batch>ECHO  /? display this help text 
Displays messages, or turns command-echoing on or off. 

    ECHO [ON | OFF] 
    ECHO [message] 

Type ECHO without parameters to display the current echo setting. 

Nie reaguje na ucieczkę (^), tj. Próbowałem^/?/^? i ^/^ ?.

Uwaga: Jako obejście, stwierdziliśmy, że wstawienie innych znaków pomiędzy wystarczy ominąć procesor wiersza komend echo, np

echo ... /? display this help text 

Mimo to, to nie jest idealne, a ja zastanawiałem się, czy nie było sposób na osiągnięcie pożądanej wydajności, a mianowicie za pomocą /? na początku echo wiadomości.

Odpowiedz

5

Na ucieczce echa argumentów, można użyć alternatywnych składni echo.:

echo./? 
+0

Dzięki! To działa, a nawet można go wypełnić spacjami. – Mykro

+0

'echo.' Zawsze uzyskuje dostęp do dysku, i kończy się niepowodzeniem z wyjściami takimi jak 'echo. \ .. \ mybat.bat' (jeśli plik mybat.bat istnieje w bieżącym katalogu) – jeb

+0

@Jeb: bardzo interesujące. –

5

Na ucieczce echa argumentów istnieje wiele wariantów, jak echo., echo:, echo=
Ale tylko echo( wydaje się być zabezpieczony przed każdy dołączany tekst.

To jeden nie powiedzie się, jeśli istnieje plików jak echo, echo[, echo] lub echo+

echo. 
echo[ 
echo] 
echo+

To jeden nie powiedzie się, jeśli plik w bieżącym katalogu istnieje nazwie my.bat

echo\..\my.bat 
echo:\..\my.bat 
echo.\..\my.bat

Są jeden nie powiedzie się autonomet pliku

echo/? 
echo,/? 
echo;/?

Tylko echo( wydaje się być zawsze bezpieczny przeciwko jakiejkolwiek zawartości

+0

Istnieje również 'echo =', które może być również zepsute przez '/?'. –

+0

Gdzie są udokumentowane te warianty? A może są one możliwe? To wszystko wygląda jak błąd. – utapyngo

+2

@utapyngo cmd.exe to losowy wynik dwunastu małp. Nie ma dokumentów, to po prostu testy (wiele testów) – jeb

Powiązane problemy