2013-04-30 14 views
92

È possibile nel file batch MS-DOS mettere in pausa lo script e attendere che l'utente preme il tasto Invio?File batch MS-DOS interrompe con il tasto Invio

Vorrei farlo all'interno di un ciclo for. Dopo ogni iterazione, voglio che lo script si interrompa e attendi che l'utente tocchi "Invio"

risposta

154

C'è un comando pause che fa proprio questo, anche se non è specificatamente il tasto invio.

Se davvero si vuole attendere che solo il tasto invio, è possibile utilizzare il comando set di chiedere per l'input dell'utente con una variabile dummy, qualcosa di simile:

set /p DUMMY=Hit ENTER to continue...

+8

Non è necessario specificare una variabile. nome: 'set/p = premi INVIO per continuare ...', o semplicemente 'set/p =' se non hai bisogno di un prompt. – dbenham

+2

Per qualche motivo, la mia app esplode oltre la logica della pausa. Molto strano. – ouflak

+7

Sembra un po 'strano vedere la parola "app" utilizzata in questo contesto (un file batch) –

11

pause il comando è quello che stai cercando. Se si guarda solo il caso in cui immesso viene colpito si può abusare del comando runas:

runas /user:# "" >nul 2>&1 

lo schermo verrà congelato fino a quando immettere è hit.What mi piace più di set/p= è che se si preme altri pulsanti di entrare non saranno visualizzati.

1

A seconda di quale sistema operativo si' re utilizzando, se siete flessibili, quindi CHOICE può essere utilizzato per aspettare su quasi qualsiasi tasto EXCEPT immettere

Se siete veramente riferendo a quello che Microsoft insiste a chiamare "Prompt dei comandi" che è semplicemente un emulatore MS-DOS, quindi forse TIMEOUT m è adatto al tuo scopo (timeout /t -1 attende su qualsiasi chiave, non solo ENTER) e, naturalmente, CHOICE è di nuovo disponibile nelle recenti edizioni WIN.

E un avvertimento sul SET /P - mentre set /p DUMMY=Hit ENTER to continue... funzionerà,

set "dummy=" 
set /p DUMMY=Hit ENTER to continue... 
if defined dummy (echo not just ENTER was pressed) else (echo just ENTER was pressed) 

sarà rilevare se basta inserire o qualcosa d'altro, che termina in ENTER è stato digitato

Problemi correlati