Як правильно обробляти коди повернення з програм за допомогою errorlevel, windows, adminstuff
Раніше я не знав, як правильно використовувати в командних файлах (розширення .bat) ERRORLEVEL разом з оператором розгалуження IF. Через це у мене виникали помилки при написанні командних файлів.
Є також можливість прямої перевірки значення коду повернення, якщо використовувати в командному файлі змінну% ERRORLEVEL% (працює тільки в тому випадку, якщо Ви не примудрилися поставити змінну оточення з таким же ім'ям). Мінлива% ERRORLEVEL% розгортається в текстове значення коду повернення, що в дозволяє використовувати в командному файлі конструкції типу:
goto answer% ERRORLEVEL%
: answer0
echo Отримано код повернення 0
: answer1
echo Отримано код повернення 1
Старий текст статті
ERRORLEVEL 0 в командних файлах відпрацьовується неправильно
Припустимо, програма program0_4.exe на виході видає коди повернення від 0 до 4, і код повернення 0 означає, що помилок не було. Потрібно відфільтрувати оператором if факт відсутності помилки. У цьому випадку не можна використовувати перевірку if errorlevel 0, так як результат цієї перевірки не завжди вірний. Приклад 1 не працює, а Приклад 2 працює нормально.
rem Приклад 1 - чомусь іноді НЕ ПРАЦЮЄ
program0_4.exe
if errorlevel 0 goto ok
echo "Error!"
goto exit
ok
echo "O.K."
rem Приклад 2 - працює нормально
program0_4.exe
if errorlevel 1 goto error
if errorlevel 2 goto error
if errorlevel 3 goto error
if errorlevel 4 goto error
goto ok
ok
echo "O.K."
goto exit
error
echo "Error!"