batch file - off - ¿Cómo esperar en un script por lotes?
batch programacion (6)
Posible duplicado:
Estoy tratando de escribir un script por lotes y tratar de esperar 10 segundos entre 2 llamadas a funciones. El comando:
sleep 10
No hace que el archivo por lotes espere 10 segundos.
Estoy ejecutando Windows XP.
Nota: Este no es un duplicado completo de Dormir en un archivo por lotes, ya que la otra pregunta también trata sobre python, mientras que esto es sobre los archivos de Windows por lotes.
Bueno, ¿el sleep
incluso existe en su caja de Windows XP? De acuerdo con este post: http://malektips.com/xp_dos_0002.html sleep
no está disponible en Windows XP, y tienes que descargar el Kit de recursos de Windows 2003 para poder obtenerlo.
La respuesta de Chakrit te da otra forma de hacer una pausa, también.
Intenta ejecutar sleep 10
desde el símbolo del sistema.
De hecho, encontré el comando correcto para usar ... se llama timeout: ss64.com/nt/timeout.html
Puede hacer ping a una dirección que seguramente no existe y especificar el tiempo de espera deseado:
ping 192.0.2.2 -n 1 -w 10000 > nul
Y dado que la dirección no existe, esperará 10,000 ms (10 segundos) y regresará.
- La parte
-w 10000
especifica el tiempo de espera deseado en milisegundos. - La parte
-n 1
le dice a ping que solo debería intentar una vez (normalmente lo intentaría 4 veces). - La parte
> nul
se agrega para que el comando ping no muestre nada en la pantalla.
Puedes hacer fácilmente un comando para dormir creando un sleep.bat en algún lugar de tu PATH y usar la técnica anterior:
rem SLEEP.BAT - sleeps by the supplied number of seconds
@ping 192.0.2.2 -n 1 -w %1000 > nul
NOTA: La dirección 192.0.2.x está reservada según RFC 3330 por lo que definitivamente no existirá en el mundo real. Citando de la especificación:
192.0.2.0/24 - Este bloque se asigna como "TEST-NET" para su uso en documentación y código de ejemplo. A menudo se usa junto con los nombres de dominio example.com o example.net en la documentación del proveedor y del protocolo. Las direcciones dentro de este bloque no deberían aparecer en Internet público.
Qué pasa:
@echo off
set wait=%1
echo waiting %wait% s
echo wscript.sleep %wait%000 > wait.vbs
wscript.exe wait.vbs
del wait.vbs
Será mejor que hagas ping a 127.0.0.1 . Windows ping hace una pausa de un segundo entre pings para que, si desea dormir durante 10 segundos, use
ping -n 11 127.0.0.1 > nul
De esta forma, no tendrá que preocuparse por los retornos anticipados inesperados (por ejemplo, no hay una ruta predeterminada y se sabe que el 123.45.67.89 es inalcanzable al instante).
Usé esto
:top
cls
type G:/empty.txt
type I:/empty.txt
timeout /T 500
goto top