Как отобразить сообщение в пакетном файле после сбоя команды ping? - PullRequest
0 голосов
/ 21 марта 2020

Я сделал этот пакетный файл:

ping google.ro IF "%ERRORLEVEL%"=="1" 
TIMEOUT /T 15
ping google.ro IF "%ERRORLEVEL%"=="1" SHUTDOWN -R -T 00

Мне бы хотелось, чтобы при сбое первого ping google.ro IF "%ERRORLEVEL%"=="1" я хотел бы показать сообщение ‘THERE’S NO INTERNET, RESTART IS IMMINENT’ в пакетном файле.

Ответы [ 2 ]

0 голосов
/ 21 марта 2020

Откройте командную строку , запустите if /? и прочитайте на первой странице вывода справку, как оценить код завершения команды или исполняемого файла с рекомендуемым синтаксисом IF ERRORLEVEL 1 для IF GREATER ИЛИ РАВНО 1, ЧЕМ или IF NOT ERRORLEVEL 1 для ЕСЛИ МЕНЬШЕ, ЧЕМ 1 , что обычно идентично ЕСЛИ РАВНО 0 0 , так как большинство исполняемых файлов никогда не завершаются с отрицательным целочисленным значением.

%SystemRoot%\System32\ping.exe google.ro
if not errorlevel 1 exit /B
echo THERE IS NO INTERNET, RESTART IS IMMINENT.
%SystemRoot%\System32\timeout.exe /T 15
%SystemRoot%\System32\ping.exe google.ro
if errorlevel 1 %SystemRoot%\System32\shutdown.exe -r -t 00

Одна строка с несколькими командами с использованием Windows командный файл описывает другое решение с использованием операторов условного выполнения && и ||.

%SystemRoot%\System32\ping.exe google.ro && exit /B
echo THERE IS NO INTERNET, RESTART IS IMMINENT.
%SystemRoot%\System32\timeout.exe /T 15
%SystemRoot%\System32\ping.exe google.ro || %SystemRoot%\System32\shutdown.exe -r -t 00

Для чтобы понять используемые команды и то, как они работают, откройте окно командной строки , выполните там следующие команды и полностью прочитайте все страницы справки, отображаемые для каждой команды.

  • echo /?
  • exit /?
  • if /?
  • ping /? или ping -?
  • shutdown -? или shutdown /?
  • timeout /?

PING и SHUTDOWN использование Unix синтаксис опций с - в начале опции, в то время как другие внутренние команды Windows процессор команд cmd.exe и внешняя Windows команда TIMEOUT use Windows синтаксис опций с / в начале опции.

См. Также: SS64.com - индекс AZ Windows CMD-команд

0 голосов
/ 21 марта 2020

Windows 10 64-бит.

Вам не нужно TIMEOUT /T 15. Используйте shutdown -r -t 15

ping -n 1 google.ro | find "TTL="> NUL
IF ERRORLEVEL 1 (
TITLE OFFLINE. RESTART NEXT.
ECHO. 
ECHO OFFLINE. RESTART NEXT.
SHUTDOWN -R -T 15
EXIT 
)
...