Como faço para um arquivo em lotes esperar / dormir por alguns segundos?

57

Eu uso um arquivo em lotes para iniciar alguns dos programas que eu preciso executar em segundo plano. Até agora, eu tinha usado o comando pause para executá-lo após a conclusão de algumas das outras start-ups. Eu preferiria usar os comandos de espera ou suspensão, 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 alcança os mesmos resultados?

Cegorach
fonte
11
Ou você pode usar o powershell: stackoverflow.com/questions/1741490/…
Berzemus
Gostaria que um sleep.exe fosse fornecido pela MS como padrão a partir de 2017 na pasta system32 ou nos arquivos de programa / em qualquer local padrão. Simples c exe 40k ou mais!
Tgkprog 03/11/2015
Como esta, sleepcmd.com
tgkprog

Respostas:

30

Existem muitos utilitários de suspensão que você pode baixar e soltar na pasta System32, um deles é fornecido com o Windows Server 2003 Resource Kit chamado 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

então, de algum lugar no seu arquivo em lotes, você pode chamá-lo assim:

CALL :sleep 1
John T
fonte
11
o truque de ping poderia ser usado como uma solução moderada, mas eu preferiria um que apenas suspendesse o processo, em vez de fazer um trabalho intenso para a época. Além disso, qual dos itens dessa lista você vinculou era o que eu estava procurando?
Cegorach 29/09/09
Você quer sleep.exe
John T
i tentou CONVOCAÇÃO: sono 1 a partir de um arquivo de lote de teste e respondeu com "sistema não pode encontrar o rótulo lote especificado - SLEEP"
Cegorach
porque você precisa adicionar a sub-rotina que eu postei acima. Call chama apenas a sub-rotina, que é as 3 linhas que eu postei acima do comando call.
John T
126

Você pode usar o timeoutcomando:

Este utilitário aceita um parâmetro de tempo limite para aguardar o período especificado (em segundos) ou até que qualquer tecla seja pressionada. Também aceita um parâmetro para ignorar a pressão da tecla.

Por exemplo, para aguardar 10 segundos:

TIMEOUT /T 10

Para mais detalhes:

TIMEOUT /?
Alex S
fonte
11
por que isso não é escolhido como a resposta correta? o atual é muito buscado, se você me perguntar
Dany Khalife
7
@ Dany: porque o tópico é de 2009, quando a maioria das instalações era XP. Antes do Vista, o Timeout estava apenas nas edições do servidor e no Resource Kit, não em uma instalação normal do XP. Atualmente, a resposta correta é Timeout.
Mvk 31/10
6
@DanyKhalife A menos que você queira executar o processo em segundo plano. "ERRO: O redirecionamento de entrada não é suportado, saindo do processo imediatamente."
Annan
8
timeout /t <seconds> /nobreak > NUL
Prichard
fonte
Funciona bem! calc && timeout 3 && notepad
Tamara Wijsman
6

Há também

waitfor SomethingThatIsNeverHappening /t 10

O que aguardará entre 1 e 99999 segundos.

Galinha
fonte
-1

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

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

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

Protetor um
fonte