2009-09-29 00:21:29 +0000 2009-09-29 00:21:29 +0000
58
58

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

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 terminaran. Preferiría usar los comandos de espera o de 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?

Respuestas (6)

126
126
126
2010-02-18 22:21:34 +0000

Puede usar el comando timeout:

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 pulsación de la tecla.

Por ejemplo, para esperar 10 segundos:

TIMEOUT /T 10

Para más detalles:

TIMEOUT /?
30
30
30
2009-09-29 00:26:17 +0000

Hay muchas utilidades de suspensión que puedes descargar y soltar en tu carpeta de 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

entonces desde algún lugar de tu archivo por lotes, puedes llamarlo así:

CALL :sleep 1
8
8
8
2010-09-01 12:53:17 +0000
timeout /t <seconds> /nobreak > NUL
6
6
6
2010-09-01 13:06:17 +0000

También hay

waitfor SomethingThatIsNeverHappening /t 10

que esperará entre 1 y 99999 segundos.

1
1
1
2009-09-29 06:11:30 +0000

sleep.exe está incluido en el Windows Server 2003 Resource Kit Tools .

Puede usar:

sleep /? sleep seconds sleep -m microsegundos

-1
-1
-1
2011-01-14 14:43:50 +0000

Si tienes Python instalado (y has añadido la ruta de instalación a tu variable de entorno), puedes dejar que Python se quede dormido con algo como:

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

(Si tienes Windows Vista o superior, timeout naturalmente es el camino a seguir, sin embargo.)