2012-12-17 19 views
5

W moim pliku wsadowym chcę zadać użytkownikowi pytanie.tak/nie plik wsadowy

napisałem następujący:

SET /P ANSWER=Click Y to continue or N to stop (Y/N) 

ale dostaję komunikat bez ostatniego ).

Ktoś wie dlaczego?

Dzięki!

+2

To działa dobrze dla mnie. Czy daje błąd? A może po prostu nie wyświetla ostatniego nawiasu? –

+0

to działa również dla mnie. –

+0

nie wyświetla ostatniego nawiasu – zipi

Odpowiedz

12

Ponieważ ten znak zachęty jest używany w bloku z nawiasami, np.

if ... (
    ... 
    set /P ANSWER=Blah (Y/N) 
) 

lub

for %%x in (...) do (
    ... 
    set /P ANSWER=Blah (Y/N) 
) 

Musisz uciec przed nawias zamykający W tym przypadku:

SET /P ANSWER=Click Y to continue or N to stop (Y/N^) 

lub zacytować cały argument:

SET /P "ANSWER=Click Y to continue or N to stop (Y/N)" 

inaczej zamyka blok. A jeśli miałbyś coś po tym zamykającym nawiasie, otrzymasz błąd składni.

Łatwiejszy sposób, co robisz nie będzie prawdopodobnie komenda choice:

choice /M "Press Y to continue or N to stop" /c YN 

Następnie można sprawdzić errorlevel potem dowiedzieć się, wybór użytkownika:

if errorlevel 255 (
    echo Error 
) else if errorlevel 2 (
    echo No. 
) else if errorlevel 1 (
    echo Yes. 
) else if errorlevel 0 (
    echo Ctrl+C pressed. 
) 
+0

(TAK/NIE ^) - nie pomagam w problemie, a polecenie polecenia powoduje niepowodzenie mojej partii – zipi

+3

+1 - Jeszcze łatwiejsze jest użycie cudzysłowu: 'set/p" answer = Kliknij Y kontynuować (T/N) ". Jestem pewien, że WYBÓR nie jest standardem w niektórych wersjach systemu Windows. – dbenham

Powiązane problemy