Как ждать сети в пакетном скрипте при загрузке на Windows Server?

Я выполняю пакетный файл с помощью TaskScheduler "При запуске системы" на Windows Server 2012 в Azure, и я заметил, что в течение 20–60 секунд после запуска пакета нет сети. В настоящее время я добавил постоянное ожидание с помощью ping, и это работает большую часть времени, но иногда нет. Можете ли вы предложить мне более надежный способ ожидания, пока сеть не станет доступной? (для отправки электронной почты и / или http запросов)

3 ответа

Вы, похоже, намереваетесь использовать пакет для этого, так что здесь идет. Возможно, вы захотите запустить это парнями из SO, поскольку они лучше сценаристов, чем я. Фактически, я получил основную логику от ( https://stackoverflow.com/questions/21245545/ping-test-using-bat-file-trouble-with-errorlevel) в комплекте с причиной, по которой тестирование, если пинг пройдет с этим методом предпочтительнее других.

@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

В основном, это просто пинг с интервалами в одну секунду, проверяет, происходит ли успешный пинг. Если это так, он делает все, что вы пытаетесь сценарий.

Я не жестко запрограммировал IP-адрес, для которого вы хотите проверить базовое ICMP-соединение, но вместо этого добавил его в качестве аргумента командной строки. Или вы можете просто жестко закодировать это.

Возможно, вы захотите перепроверить синтаксис, так как я не проверял это вообще.

РЕДАКТИРОВАТЬ: Изменено значение пинга до 11, чтобы отразить реальную 10-секундную задержку.

Используйте опцию "Пуск, только если это сетевое соединение доступно".введите описание здесь

Согласно этому ответу суперпользователя, вы можете подписать запланированное задание на событие "сеть доступна".
Пока вы не фильтруете для конкретной сети, я думаю, что это должно работать.

Другие вопросы по тегам