Possível duplicado:
como dormir em um arquivo de lote?
Aqui está uma maneira haxxorish de pausar por um segundo em um arquivo de lote:
PING 400.500.600.700 > NUL
Eu pesquisei, mas não tenho certeza se existem melhores .. alguma idéia? :)
Possível duplicado:
como dormir em um arquivo de lote?
Aqui está uma maneira haxxorish de pausar por um segundo em um arquivo de lote:
PING 400.500.600.700 > NUL
Eu pesquisei, mas não tenho certeza se existem melhores .. alguma idéia? :)
A maneira correta de fazer isso é usar o
timeout
comando, introduzido no Windows 2000.Para esperar 30 segundos:
O tempo limite seria interrompido se o usuário pressionasse qualquer tecla; no entanto, o comando também aceita o switch opcional
/nobreak
, que efetivamente ignora qualquer coisa que o usuário possa pressionar, exceto um explícitoCTRL-C
:Além disso, se você não quiser que o comando imprima sua contagem regressiva na tela, você pode redirecionar sua saída para
NUL
:Você pode usar as opções "escolha padrão" e "tempo limite" do comando de escolha interno para criar um atraso.
Acertar uma tecla vai superar a contagem regressiva é a única desvantagem.
Aqui está o que eu tenho usado como substituto para sleep.exe ,
Mude
-n x
para esperar (aproximadamente)x
segundos.Aparentemente , o kit de recursos do Windows tem o comando sleep nele. Outros sites também recomendam o uso de escolha.....
O comando CHOICE com um timer funciona bem...
ESCOLHA /C:x /T:x,10 > NUL
Existem também "programas" que você pode executar como WAIT e SLEEP, etc.
Espero que isto ajude.
O ping (acima) é bom, mas só funciona se estiver conectado a uma rede.
Um pouco de script que vai atrasar está abaixo:
@echo off
set /a segundosend=%TIME:~6,2%+10
se %secondsend% GTR 59 definir /a secondsend=secondsend-60
:espere aqui
if %TIME:~6,2% NEQ %secondsend% tem que esperar aqui
Isso fará uma pausa entre 9 e 10 segundos (o primeiro segundo não é preciso devido ao uso do comando TIME - e pode ser a metade de um segundo antes de você começar).
Se funciona definindo 'secondsend' para o segundo atual do relógio do PC, adicionando 10 a ele (o atraso). Se for maior que 59, tire 60, pois é enrolado para o próximo minuto. Em seguida, há um loop que verifica o segundo atual com 'secondsend' - uma vez que eles correspondem, o script continua.
Se você quiser atrasar por um período diferente de 2 a 59, altere o 10 na segunda linha (eu digo 2 a 59, pois o primeiro segundo pode não ser um segundo completo, então 2 poderia ser 1,2 segundos, por exemplo).
Desculpe, é tão prolixo, mas pensei em explicar como funciona a rotina.
Acabei de escrever um exe simples em C#. Basta usar o statis System.Threading.Sleep e pegar o argumento da linha de comando e convertê-lo em um inteiro.
Demorou 5 minutos para fazer.