HOWTO · batch

Como dormir ou esperar X segundos em um arquivo batch

Saiba como pausar um arquivo batch por um número de segundos: use o comando integrado timeout, ou a solução alternativa com ping para sistemas onde timeout não está disponível.

Nesta página

Ao trabalhar com arquivos batch, você pode precisar pausar a execução por uma duração específica. Seja esperando a conclusão de um processo ou simplesmente adicionando um atraso para a interação do usuário, saber como implementar uma função de dormir ou esperar é essencial.

Neste artigo, exploraremos dois métodos eficazes para conseguir isso em um arquivo batch: usar o comando timeout e o comando ping. Cada método é simples e pode ser facilmente integrado aos seus scripts, permitindo um melhor controle sobre o fluxo de execução. Vamos mergulhar nessas soluções e aprender a gerenciar o tempo nos seus arquivos batch de forma eficaz.

Usando o comando timeout

O comando timeout é a maneira simples de pausar um arquivo batch por um número especificado de segundos. Ele é integrado ao Windows (desde o Vista) e é fácil de usar: /t indica o número de segundos a esperar, que pode variar de -1 (esperar indefinidamente por uma tecla) a 99999. Veja como você pode implementá-lo:

@echo off
echo Waiting for 10 seconds...
timeout /t 10
echo Done waiting!

Resultado:

Waiting for 10 seconds...
Done waiting!

Neste exemplo, o arquivo batch exibe uma mensagem indicando que está esperando 10 segundos. O comando timeout /t 10 pausa a execução por 10 segundos, contando regressivamente na tela; após a espera, ele imprime “Done waiting!” para indicar que a pausa terminou. Você pode ajustar o número de segundos alterando o valor depois de /t.

Por padrão, pressionar qualquer tecla encerra a espera antecipadamente. Adicione /nobreak — timeout /t 10 /nobreak — para ignorar as teclas pressionadas (Ctrl+C ainda interrompe o script). Uma limitação a saber: timeout não pode ser executado quando a entrada padrão do script é redirecionada, por exemplo por um agendador ou outro programa; nesse caso, ele imprime um erro em vez de esperar, que é quando a solução alternativa com ping abaixo é útil.

Usando o comando ping

Outro método para introduzir um atraso em um arquivo batch é usar o comando ping. Embora esse comando seja usado principalmente para diagnósticos de rede, ele pode ser reaproveitado para criar uma pausa, porque cada resposta de ping leva cerca de um segundo para voltar. Veja como fazer isso:

@echo off
echo Waiting for 5 seconds...
ping 127.0.0.1 -n 6 > nul
echo Done waiting!

Resultado:

Waiting for 5 seconds...
Done waiting!

Neste exemplo, o arquivo batch espera 5 segundos antes de prosseguir. O comando ping 127.0.0.1 -n 6 envia 6 pings para o localhost (127.0.0.1). A primeira resposta retorna imediatamente e cada resposta adicional leva aproximadamente um segundo, então 6 pings criam uma pausa de cerca de 5 segundos — para esperar N segundos, faça ping N+1 vezes. A parte > nul suprime a saída do comando ping, garantindo que o console permaneça organizado. Este método é uma solução alternativa, e não um comando de dormir real, mas também funciona onde timeout não está disponível ou não pode ser executado, como em versões mais antigas do Windows ou com a entrada redirecionada.

Conclusão

Em resumo, saber como dormir ou esperar em um arquivo batch é uma habilidade valiosa que pode aprimorar suas capacidades de script. O comando timeout é a opção simples e feita para esse fim, enquanto o comando ping oferece uma alternativa viável quando timeout não pode ser usado. Ao implementar esses métodos, você pode gerenciar com eficácia o fluxo de execução e melhorar a experiência do usuário nos seus scripts batch. Seja automatizando tarefas ou criando scripts interativos, essas técnicas serão muito úteis.

FAQ

  1. O que é um arquivo batch?
    Um arquivo batch é um arquivo de texto que contém uma série de comandos que são executados em sequência pelo interpretador de linha de comando no Windows.

  2. Posso usar dormir em arquivos batch em versões mais antigas do Windows?
    Sim, você pode usar o comando ping como uma solução alternativa se o comando timeout não estiver disponível.

  3. Quanto tempo posso esperar usando o comando timeout?
    O comando timeout pode esperar um máximo de 99999 segundos, o que equivale a aproximadamente 27,7 horas. Um valor de -1 espera até que uma tecla seja pressionada.

  4. Existe uma maneira de cancelar o tempo limite?
    Sim, você pode pressionar qualquer tecla antes que o período de tempo limite termine para cancelar a espera — a menos que o comando tenha sido iniciado com /nobreak, caso em que apenas Ctrl+C o interrompe.

  5. Posso usar esses métodos em scripts que não sejam arquivos batch?
    Esses são comandos do interpretador de comandos do Windows, portanto funcionam em qualquer lugar onde cmd os execute, incluindo arquivos batch; eles não estão disponíveis nos shells Unix.