Como pausar a execução por um tempo em um arquivo em lotes do Windows entre um comando e o próximo?
windows
batch-file
batch
Massimo
fonte
fonte
Respostas:
A maneira correta de dormir em um arquivo em lotes é usar o
timeout
comando, introduzido no Windows 2000.Para esperar entre 29 e 30 segundos :
O tempo limite seria interrompido se o usuário pressionar qualquer tecla; no entanto, o comando também aceita a opção opcional
/nobreak
, que ignora efetivamente qualquer coisa que o usuário possa pressionar, exceto uma explícitaCTRL-C
:Além disso, se você não quiser que o comando imprima sua contagem regressiva na tela, poderá redirecionar sua saída para
NUL
:fonte
Como também se aplica aqui, copiarei minha resposta de outro site .
Se você deseja usar o ping, existe uma maneira melhor. Você deseja executar ping em um endereço que não existe, para poder 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 é inventado, é realmente um endereço com o único objetivo de não existir (pode não estar claro, mas se aplica mesmo em redes locais):Para dormir por 123 milissegundos, use
ping 192.0.2.1 -n 1 -w 123 >nul
fonte
Ping
é simplesmente a ferramenta errada para o trabalho.Você também pode inserir um ping no host local. Isso levará 4 segundos para ser concluído (por padrão). É considerado um argumento por alguns, mas funciona muito bem da mesma forma.
O comando:
ping 127.0.0.1
fonte
ping
seu sistema operacional vem ou não . Se você está preocupado o suficiente sobre '95 '98 ou ME, então você deve ser como igualmente preocupado com 6,22 que não temping
tantoIsenção de responsabilidade : esta não é a solução "ideal", então não se incomode em me bater na cabeça com isso, como feito para aqueles que recomendam
ping
...Quando possível, use
timeout
com certeza. Mas, como observado nos comentários, isso nem sempre é uma opção (por exemplo, no modo não interativo). Depois disso, concordo que oping
"kludge" é talvez a próxima melhor opção, pois é muito simples. Dito isto, ofereço outra opção ... incorporar alguns scripts VB .A base desta solução tem todos os tipos de aplicação além disso. Freqüentemente, o VBS pode fazer coisas que o lote não pode ou, pelo menos, fazê-lo com drasticamente mais facilidade. Usando a técnica ilustrada aqui, você pode misturar os dois (não "perfeitamente", mas "funcionalmente" ...).
Aqui está uma lista, para criar um script temporário, executá-lo e excluí-lo. O script dorme para você (por 3 segundos neste exemplo).
Aqui está basicamente a mesma coisa, escrita de forma um pouco diferente:
E então, finalmente, como
ping
,CScript
em si tem uma opção de tempo limite! Portanto, se você inserir um loop infinito no script, poderá deixar o intérprete impor a duração. Observe que esta é uma operação "ocupada", que consome a CPU e, portanto, não a recomendo quando você pode usar oWScript.Sleep
procedimento, mas apresento como uma opção conceitual por uma questão de integridade:fonte