Como dormir em um arquivo de lote?

116

Como pausar a execução por um tempo em um arquivo de lote do Windows entre um comando e o próximo?

    
por Massimo 26.09.2012 / 21:45

3 respostas

176

A maneira correta de dormir em um arquivo de lote é usar o Comando timeout , introduzido no Windows 2000.

Para esperar algo entre 29 e 30 segundos :

timeout /t 30

O tempo limite será interrompido se o usuário pressionar qualquer tecla; no entanto, o comando também aceita o comutador opcional /nobreak , que efetivamente ignora qualquer coisa que o usuário possa pressionar, exceto um CTRL-C explícito:

timeout /t 30 /nobreak

Além disso, se você não quiser que o comando imprima sua contagem regressiva na tela, poderá redirecionar sua saída para NUL :

timeout /t 30 /nobreak > NUL
    
por 26.09.2012 / 21:45
8

Como isso se aplica também, vou copiar minha resposta de outro site .

Se você quiser usar ping, existe uma maneira melhor. Você desejará executar ping em um endereço que não existe, portanto, você pode especificar um tempo limite com precisão de milissegundos. Felizmente, esse endereço é definido em um padrão (RFC 3330) e é 192.0.2.x . Isso não é feito, é realmente um endereço com o único propósito de não-existente (pode não estar claro, mas se aplica até mesmo em redes locais):

192.0.2.0/24 - This block is assigned as "TEST-NET" for use in documentation and example code. It is often used in conjunction with domain names example.com or example.net in vendor and protocol documentation. Addresses within this block should not appear on the public Internet.

Para dormir por 123 milissegundos, use ping 192.0.2.1 -n 1 -w 123 >nul

    
por 17.07.2014 / 12:58
5

Você também pode inserir um ping no host local. Isso levará 4 segundos para concluir (por padrão). É considerado um kludge por alguns, mas funciona muito bem mesmo assim.

O comando:
    ping 127.0.0.1

    
por 26.09.2012 / 22:10