¿Cómo hago que un archivo por lotes espere / duerma durante unos segundos?

57

Utilizo un archivo por lotes para iniciar algunos de los programas que necesito ejecutar en segundo plano. Hasta ahora, había usado el comando de pausa para ejecutarlo después de que algunos de los otros arranques hubieran terminado. Preferiría usar los comandos de espera o suspensión, pero no parecen estar incluidos en Windows 7.

¿Alguien sabe cómo volver a poner esos comandos o un método diferente que logre los mismos resultados?

Cegorach
fuente
1
O puede usar powershell: stackoverflow.com/questions/1741490/…
Berzemus el
Deseo que MS proporcione un sleep.exe de forma predeterminada a partir de 2017 en la carpeta system32 o en los archivos de programa / cualquier lugar estándar. Simple c exe 40k más o menos!
tgkprog
Como este sleepcmd.com
tgkprog

Respuestas:

30

Hay muchas utilidades de suspensión que puede descargar y colocar en su carpeta System32, una se proporciona con el Kit de recursos de Windows Server 2003 llamado sleep.exe.

También puedes usar el truco de ping:

:sleep
ping 127.0.0.1 -n 2 -w 1000 > NUL
ping 127.0.0.1 -n %1 -w 1000 > NUL

luego, desde algún lugar de su archivo por lotes, puede llamarlo así:

CALL :sleep 1
John T
fuente
1
El truco del ping podría usarse como una solución temporal, pero preferiría una que simplemente suspendiera el proceso, en lugar de hacer que el trabajo ocupado por el momento. Además, ¿cuál de los elementos de esa lista que vinculó era lo que estaba buscando?
Cegorach
Desea sleep.exe
John T
Intenté LLAMAR: dormir 1 desde un archivo de lote de prueba y respondió con "el sistema no puede encontrar la etiqueta de lote especificada - SLEEP"
Cegorach
porque necesita agregar la subrutina que publiqué anteriormente. Llamar solo llama a la subrutina, que son las 3 líneas que publiqué arriba del comando de llamada.
John T
126

Puedes usar el timeoutcomando:

Esta utilidad acepta un parámetro de tiempo de espera para esperar el período de tiempo especificado (en segundos) o hasta que se presione cualquier tecla. También acepta un parámetro para ignorar la presión de la tecla.

Por ejemplo, esperar 10 segundos:

TIMEOUT /T 10

Para más detalles:

TIMEOUT /?
Alex S
fuente
1
¿Por qué no se elige esto como la respuesta correcta? el actual es descabellado si me preguntas
Dany Khalife
77
@Dany: porque el tema es de 2009, cuando la mayoría de las instalaciones eran XP. Antes de Vista, Timeout solo estaba en las ediciones del servidor y en el Kit de recursos, no en una instalación normal de XP. Hoy en día, de hecho, la respuesta correcta es Timeout.
mivk
66
@DanyKhalife A menos que desee ejecutar el proceso en segundo plano. "ERROR: no se admite la redirección de entrada, saliendo del proceso de inmediato".
Annan
8
timeout /t <seconds> /nobreak > NUL
Prichard
fuente
¡Funciona genial! calc && timeout 3 && notepad
Tamara Wijsman
6

También hay

waitfor SomethingThatIsNeverHappening /t 10

Que esperará entre 1 y 99999 segundos.

Ave
fuente
-1

Si tiene instalado Python (y agregó la ruta de instalación a su variable de entorno), puede dejar que Python duerma con algo como:

echo from time import sleep; sleep(3) | python

(Sin embargo, si tiene Windows Vista o superior, timeoutnaturalmente es el camino a seguir).

Protector uno
fuente