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

Como posso fazer um ficheiro batch esperar / dormir durante alguns segundos?

Utilizo um ficheiro batch para iniciar alguns dos programas de que preciso para executar em segundo plano. Até agora, eu tinha usado o comando de pausa para executá-lo depois de algumas das outras partidas terem terminado. Preferia usar os comandos de espera ou de repouso mas 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?

Respostas (6)

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

Pode utilizar o comando timeout:

Este utilitário aceita um parâmetro de timeout para esperar pelo período de tempo especificado (em segundos) ou até que qualquer tecla seja premida. Também aceita um parâmetro para ignorar o premir da tecla.

Por exemplo, para esperar 10 segundos:

TIMEOUT /T 10

Para mais detalhes:

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

Existem muitos utilitários para dormir que pode descarregar e colocar na pasta System32, um deles é fornecido com o Windows Server 2003 Resource Kit chamado sleep.exe.

Também pode usar o truque do 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 ficheiro de lote, pode chamá-lo assim:

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

Há também os

waitfor SomethingThatIsNeverHappening /t 10

que aguardarão entre 1 e 99999 segundos.

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

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

Pode usar:

sleep /? sleep seconds sleep -m microssegundos

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

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

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

(Se tem o Windows Vista ou superior, timeout é naturalmente o caminho a seguir, no entanto).