¿Cómo pausar la ejecución durante un tiempo en un archivo por lotes de Windows entre un comando y el siguiente?
windows
batch-file
batch
Massimo
fuente
fuente
Respuestas:
La forma correcta de dormir en un archivo por lotes es usar el
timeout
comando, introducido en Windows 2000.Para esperar entre 29 y 30 segundos :
El tiempo de espera se interrumpiría si el usuario presiona cualquier tecla; sin embargo, el comando también acepta el interruptor opcional
/nobreak
, que ignora efectivamente cualquier cosa que el usuario pueda presionar, excepto un explícitoCTRL-C
:Además, si no desea que el comando imprima su cuenta regresiva en la pantalla, puede redirigir su salida a
NUL
:fuente
Como también se aplica aquí, copiaré mi respuesta de otro sitio .
Si quieres usar ping, hay una mejor manera. Querrá hacer ping a una dirección que no existe, por lo que puede especificar un tiempo de espera con precisión de milisegundos. Afortunadamente, dicha dirección se define en un estándar (RFC 3330), y lo es
192.0.2.x
. Esto no está inventado, realmente es una dirección con el único propósito de no existir (puede que no esté claro, pero se aplica incluso en redes locales):Para dormir 123 milisegundos, use
ping 192.0.2.1 -n 1 -w 123 >nul
fuente
Ping
es simplemente la herramienta incorrecta para el trabajo.También puede insertar un ping a localhost. Esto tardará 4 segundos en completarse (de forma predeterminada). Algunos lo consideran un error, pero de todos modos funciona bastante bien.
El comando:
ping 127.0.0.1
fuente
ping
viene con su sistema operativo o no . Si te preocupa lo suficiente sobre '95 '98 o ME, entonces debería ser igualmente preocupado por 6,22 que no tieneping
o bienDescargo de responsabilidad : esta no es la solución "ideal", así que no te molestes en golpearme la cabeza con eso como lo hicieron los que recomiendan
ping
...Cuando sea posible, úselo
timeout
con seguridad. Pero como se señaló en los comentarios, esa no siempre es una opción (por ejemplo, en modo no interactivo). Después de eso, estoy de acuerdo en queping
"kludge" es quizás la siguiente mejor opción, ya que es muy simple. Dicho esto, ofrezco otra opción ... incrustar algunos VB Script .La base de esta solución tiene todo tipo de aplicaciones más allá de esto. A menudo, VBS puede hacer cosas que el lote no puede, o al menos hacerlo con mucha más facilidad. Usando la técnica ilustrada aquí, puede mezclar los dos (no "sin problemas", sino "funcionalmente" ...).
Aquí hay un trazador de líneas, para crear un script temporal, ejecutarlo y luego eliminarlo. El script duerme por ti (durante 3 segundos en este ejemplo).
Esto es básicamente lo mismo, escrito de manera un poco diferente:
Y, por último, al igual que
ping
,CScript
en sí tiene una opción de tiempo de espera! Entonces, si ingresa un bucle infinito en el script, puede dejar que el intérprete imponga la duración. Tenga en cuenta que esta es una operación "ocupada", que consume la CPU y, por lo tanto, no la recomiendo cuando puede usar elWScript.Sleep
procedimiento, pero lo presento como una opción conceptual en aras de la integridad:fuente