Pausa de archivo por lotes de MS-DOS con la tecla Intro

146

¿Es posible en el archivo por lotes de MS-DOS pausar el script y esperar a que el usuario presione la tecla Intro?

Deseo hacer esto dentro de un bucle for. Después de cada iteración, quiero que el script se detenga y espere a que el usuario presione 'Enter'

dr_rk
fuente

Respuestas:

247

Hay un pausecomando que hace exactamente eso, aunque no es específicamente la tecla Intro.

Si realmente desea esperar solo la tecla Intro, puede usar el setcomando para solicitar la entrada del usuario con una variable ficticia, algo como:

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

abjuk
fuente
17
No necesita especificar un nombre de variable: set /p=Hit ENTER to continue...o simplemente set /p=si no necesita un aviso.
dbenham
2
Por alguna razón, mi aplicación está superando la lógica de pausa. Muy extraño.
ouflak
11
Parece un poco extraño ver la palabra "aplicación" en este contexto (un archivo por lotes)
Adrian Grigore
no funciona para mi funciona solo desde el segundo lanzamiento cuando 'set' funcionó / ​​se guardó en el entorno.
ses
13

pausecomando es lo que buscas. Si solo busca el caso cuando se presiona enter, puede abusar del runascomando:

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

la pantalla se congelará hasta que se presione enter. Lo que más me gusta set/p=es que si presionas otros botones que no sean enter, no se mostrarán.

npocmaka
fuente
4

Puedes hacerlo con el pausecomando, ejemplo:

dir
pause
echo Now about to end...
pause
Vic_HT
fuente
1
pausede hecho es la única respuesta válida para MS-DOS(todas las demás respuestas cmdsolo funcionan). Entonces, su respuesta es en realidad la única completamente correcta para esta pregunta especial (aunque ya se sugirió hace más de 7 años)
Stephan
3

Dependiendo de qué sistema operativo que está usando, si usted es flexible, entonces CHOICEpuede ser utilizado para esperar en casi cualquier tecla EXCEPTentrar

Si realmente te estás refiriendo a lo que Microsoft insiste en llamar "Símbolo del sistema", que es simplemente un emulador de MS-DOS, entonces tal vez TIMEOUTse adapte a tu propósito ( timeout /t -1espera en cualquier tecla, no solo ENTER) y, por supuesto, CHOICEestá disponible nuevamente en las últimas ediciones WIN.

Y una advertencia sobre SET /P, mientras set /p DUMMY=Hit ENTER to continue...que funcionará,

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

detectará si solo se ingresó ENTER o alguna otra cosa, terminando en ENTER se ingresó.

Magoo
fuente