Pausa file batch MS-DOS con il tasto Invio


146

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

Vorrei farlo all'interno di un ciclo for. Dopo ogni iterazione, voglio che lo script venga messo in pausa e attenda che l'utente prema "Invio"

Risposte:


247

C'è un pausecomando che fa proprio questo, anche se non è specificamente il tasto Invio.

Se vuoi davvero aspettare solo il tasto Invio, puoi usare il setcomando per chiedere l'input dell'utente con una variabile fittizia, qualcosa del tipo:

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


17
Non è necessario specificare un nome di variabile: set /p=Hit ENTER to continue...o semplicemente set /p=se non è necessario un prompt.
dbenham,

2
Per qualche ragione, la mia app sta saltando oltre la logica di pausa. Molto strano.
ouflak,

11
Sembra un po 'strano vedere la parola "app" utilizzata in questo contesto (un file batch)
Adrian Grigore,

per me non funziona. funziona solo dal secondo avvio quando "set" è stato elaborato / salvato nell'ambiente.
ses

13

pauseil comando è quello che stai cercando. Se stai guardando SOLO il caso quando premi il tasto Invio puoi abusare del runascomando:

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

lo schermo verrà congelato fino a quando non viene premuto Invio. Ciò che mi piace di più set/p=è che se si premono pulsanti diversi da Enter non verranno visualizzati.


4

Puoi farlo con il pausecomando, esempio:

dir
pause
echo Now about to end...
pause

1
pauseinfatti è l'unica risposta valida per MS-DOS(tutte le altre risposte funzionano cmdsolo). Quindi, la tua risposta è in realtà l'unica completamente corretta per questa domanda speciale (anche se era già stata suggerita più di 7 anni prima)
Stephan

3

A seconda del sistema operativo in uso, se si è flessibili, è CHOICEpossibile utilizzare quasi tutti i tasti EXCEPTimmessi

Se ti stai davvero riferendo a ciò che Microsoft insiste nel chiamare "Prompt dei comandi" che è semplicemente un emulatore MS-DOS, allora forse TIMEOUTpotrebbe adattarsi al tuo scopo ( timeout /t -1aspetta su qualsiasi tasto, non solo ENTER) e ovviamente CHOICEè di nuovo disponibile nelle recenti edizioni WIN.

E un avvertimento su 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)

rileverà se è stato digitato solo ENTER o qualcos'altro, terminando con ENTER.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.