ping (правда, это бывает довольно редко) возвращает 0 при отсутствии соединения
Лучше использовать что-то типа:
ping -n ya.ru | find "(0" >nul
if not "%ERRORLEVEL%"=="0" shutdown /r /t 1
Здесь поиск "(0" это поиск "(0% потерь" в случае русской локализации.