Como faço um arquivo de lote esperar / dormir por alguns segundos?

54

Eu uso um arquivo em lotes para iniciar alguns dos programas que preciso executar em segundo plano. Até agora, eu tinha usado o comando pause para executá-lo depois que algumas das outras start-ups terminaram. Eu preferiria usar os comandos wait ou sleep, mas eles não parecem estar incluídos no Windows 7.

Alguém sabe como colocar esses comandos de volta ou um método diferente que atinja os mesmos resultados?

    
por Cegorach 29.09.2009 / 02:21

6 respostas

30

Existem muitos utilitários de suspensão que você pode baixar e colocar na sua pasta System32, um deles é fornecido com o Windows Server 2003 Resource Kit denominado sleep.exe .

Você também pode usar o truque de ping:

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

depois de algum lugar no seu arquivo de lote, você pode chamá-lo assim:

CALL :sleep 1
    
por 29.09.2009 / 02:26
121

Você pode usar o comando timeout :

This utility accepts a timeout parameter to wait for the specified time period (in seconds) or until any key is pressed. It also accepts a parameter to ignore the key press.

Por exemplo, para aguardar 10 segundos:

TIMEOUT /T 10

Para mais detalhes:

TIMEOUT /?
    
por 18.02.2010 / 23:21
8
timeout /t <seconds> /nobreak > NUL
    
por 01.09.2010 / 14:53
6

Há também

waitfor SomethingThatIsNeverHappening /t 10

Que aguarda entre 1 e 99999 segundos.

    
por 01.09.2010 / 15:06
1

O sleep.exe está incluído no Windows Server 2003 Resource Kit Tools .

Você pode usar:

sleep /?
sleep seconds
sleep -m microseconds

    
por 29.09.2009 / 08:11
-1

Se você tem o Python instalado (e adicionou o caminho de instalação à sua variável de ambiente), você pode deixar o Python dormir com algo como:

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

(Se você tem o Windows Vista ou superior, o timeout naturalmente é o caminho a percorrer.)

    
por 14.01.2011 / 15:43