Provavelmente não é a melhor maneira de fazer isso, mas aqui vai:
:loop
if %TIME% LSS 17:30:00.00 goto loop
echo Continuing at %TIME%
Eu fiz um script em lote para backup recentemente. Em algum lugar no meio do roteiro, terei que esperar algum tempo para ser alcançado e então retomar a próxima linha do script. Eu agendei o script às 16:00 e após o comando wait a próxima linha deve começar exatamente às 17:30. Pensei em usar o comando SLEEP
, mas não tenho certeza se os comandos usados antes do comando wait acabarão em determinado momento (devido a tamanhos de arquivo inconsistentes), mas com certeza eles serão feitos às 5:00 ou 5:10 e Em seguida, deve executar o comando wait, que aguarda o relógio do sistema. Estou verificando se existe algum comando que aguarde ou durma até que o horário especificado atinja a hora do sistema e continue aí depois. Alguém se deparou com esta situação e como isso foi resolvido?
Você está usando duas tags, WinXP e Server-2008-R2, por isso não tenho certeza de qual ambiente está sendo executado.
Ambos os ambientes têm um comando chamado schtasks
, que permite configurar tarefas agendadas a partir da linha de comando, embora os recursos dessa ferramenta variem com a plataforma. Ele permitirá que você configure uma tarefa única que chamará o restante do seu script. Terá que estar em um arquivo separado, mas será executado uma única vez às 17h30.
Sintaxe do XP: link
Sintaxe do Server-2008: link
Eu não sei sobre qualquer comando para esperar por um tempo específico, mas você pode encontrar alguns pesquisando por ele. Resolvemos problemas semelhantes cortando os arquivos em lote em partes separadas e agendando-as individualmente.