2012-12-17 24 views
5

Nel mio file batch voglio porre una domanda all'utente.sì/no file batch

ho scritto il seguente:

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

ma ottengo il messaggio senza l'ultima ).

Qualcuno sa perché?

Grazie!

+2

tutto funziona bene per me. Ti dà un errore? O semplicemente non mostra l'ultima parentesi? –

+0

funziona anche per me. –

+0

non visualizzare l'ultima staffa – zipi

risposta

12

Perché stai usando che pronta all'interno di un blocco parentesi, ad esempio

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

o

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

si deve sfuggire alla parentesi chiusa in quel caso:

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

o citare l'intero argomento:

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

altrimenti si chiude la bloccare. E se avessi qualcosa dopo quella parentesi di chiusura avresti avuto un errore di sintassi.

Un metodo più semplice di quello che fate ci sarebbe probabilmente il comando choice:

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

È possibile quindi controllare l'errorlevel dopo per scoprire scelta dell'utente:

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

(S/N ^) - non aiuto al problema e la scelta dei comandi causa al mio batch per fallito – zipi

+3

1 - Ancora più facile penso è quello di usare le virgolette: 'set/p risposta" = Clicca Y per continuare (S/N) ". Sono abbastanza sicuro che SCELTA non sia standard su alcune versioni di Windows. – dbenham