Я написал командный файл, который проверяет, находится ли сервер в сети. Он использует несколько инструментов Cygwin-64.

Вот командный файл:

wget -S http://www.example.com/ -o headers.txt -O index.html
cat http-commands.txt | ncat --idle-timeout 5 -vvv www.example.com 80 >> ncat.txt

unix2dos headers.txt

grep -i apache headers.txt > comparison-now.txt

fc comparison-known-good.txt comparison-now.txt

if %errorlevel% 1 goto email

echo Exit Code is %errorlevel%

if %errorlevel% 0 goto good

:email
del /f /q files.zip
zip -xi ncat.txt index.html headers.txt files.zip
C:\commands\Blat.exe C:\path\message.txt -attach C:\path\files.zip -tf     C:\path\recipients.txt -subject "Example.com Down!" -server relay.server.com -f example@gmail.com -log C:\path\log.txt -debug -timestamp -overwritelog 


:good
REM Hooray! The server is alive!
exit

Выход ниже:

1 was unexpected at this time.
C:\path>if 0 1 goto email

Возможно, логика должна быть такой, поскольку будут только две разные ошибки?

if errorlevel 1 do this
.
else do this

1 ответ1

1

Пакетный файл выдает сообщение: "1 был неожиданным в это время"

Ты используешь:

if %errorlevel% 1 goto email

...

if %errorlevel% 0 goto good

Попробуйте вместо этого:

if %errorlevel% equ 1 goto email

...

if %errorlevel% equ 0 goto good

ЕСЛИ - условно выполнить команду

IF будет анализировать номера только при использовании одного из (EQU, NEQ, LSS, LEQ, GTR, GEQ). Оператор сравнения == всегда приводит к сравнению строк.

IF ERRORLEVEL n операторы должны читаться как IF Errorlevel> = число

IF ERRORLEVEL 0 вернет TRUE, когда уровень ошибки равен 64

Альтернативный и часто лучший метод проверки уровней ошибок - это использование переменной% ERRORLEVEL%:

IF %ERRORLEVEL% GTR 0 Echo An error was found
IF %ERRORLEVEL% LSS 0 Echo An error was found

IF %ERRORLEVEL% EQU 0 Echo No error found
IF %ERRORLEVEL% EQU 0 (Echo No error found) ELSE (Echo An error was found)
IF %ERRORLEVEL% EQU 0 Echo No error found || Echo An error was found

Source IF - Условно выполнить команду


Дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .