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.