Use a opção "Iniciar somente se esta conexão de rede estiver disponível".
Estou executando um arquivo em lotes com o TaskScheduler "Na inicialização do sistema" em um Windows Server 2012 no Azure, e observei que não há rede por 20 a 60 segundos após o início do lote. Atualmente eu adicionei uma espera constante com ping, e funciona na maior parte do tempo, mas às vezes não. Você pode me sugerir um método mais robusto para esperar até que a rede esteja disponível? (para enviando pedidos de e-mail e / ou http)
Use a opção "Iniciar somente se esta conexão de rede estiver disponível".
Você parece querer usar o lote para isso, então aqui vai. Você pode querer executar isso pelos caras do SO, já que eles são melhores programadores do que eu. Na verdade, eu tenho a lógica principal de ( link ) complete com o motivo pelo qual testar se um ping passará por esse método é preferível a outros.
@echo off
set IPaddress=%%1 REM add IP address as command line argument or just static
:TEST
ping -n 1 %IPaddress% | find "TTL=" >nul
if errorlevel 1 (
goto RETRY
) else (
goto DOSTUFF
)
:RETRY
ping 127.0.0.1 -n 11>nul REM waits given amount of time, set to 10 seconds
goto TEST
:DOSTUFF
do stuff REM Do stuff
exit
Basicamente, apenas pings em intervalos de um segundo, verifica se um ping bem-sucedido ocorre. Se assim for, faz o que você está tentando roteiro.
Eu não codifiquei o IPaddress para o qual você deseja verificar a conectividade ICMP básica, mas adicionei-o como um argumento de linha de comando. Ou você pode simplesmente codificar isso.
Talvez você queira verificar a sintaxe novamente, já que eu não testei isso.
EDIT: Valor de ping alterado para 11 para refletir um atraso real de 10 segundos.
De acordo com esta resposta no superusuário , você pode inscrever sua tarefa agendada no evento "a rede está disponível".
Contanto que você não filtre por uma rede específica, acho que deve funcionar.