Пакетный скрипт - код возврата
По умолчанию, когда выполнение из командной строки завершено, оно должно либо возвращать ноль при успешном выполнении, либо ненулевое значение при неудачном выполнении. Когда пакетный сценарий возвращает ненулевое значение после сбоя выполнения, ненулевое значение укажет номер ошибки. Затем мы будем использовать номер ошибки, чтобы определить, в чем ошибка, и соответствующим образом устранить ее.
Ниже приводится общий код выхода и их описание.
Код ошибки | Описание |
---|---|
0 | Программа успешно завершена. |
1 | Неправильная функция. Указывает, что Action попытался выполнить нераспознанную команду в командной строке Windows cmd.exe. |
2 | Система не может найти указанный файл. Указывает, что файл не может быть найден в указанном месте. |
3 | Система не может найти указанный путь. Указывает, что указанный путь не может быть найден. |
5 | Доступ запрещен. Указывает, что у пользователя нет прав доступа к указанному ресурсу. |
9009 0x2331 |
Программа не распознается как внутренняя или внешняя команда, действующая программа или командный файл. Указывает, что команда, имя приложения или путь были неправильно написаны при настройке действия. |
221225495 0xC0000017 -1073741801 |
Недостаточно виртуальной памяти. Это указывает на то, что в Windows не хватает памяти. |
3221225786 0xC000013A -1073741510 |
Приложение было закрыто в результате нажатия CTRL + C. Указывает, что приложение было закрыто нажатием клавиш CTRL + C или CTRL + Break или закрытием окна командной строки. |
3221225794 0xC0000142 -1073741502 |
Приложение не удалось правильно инициализировать. Указывает, что приложение было запущено на рабочем столе, к которому текущий пользователь не имеет прав доступа. Другая возможная причина заключается в том, что не удалось инициализировать либо gdi32.dll, либо user32.dll. |
Уровень ошибки
Переменная среды% ERRORLEVEL% содержит код возврата последней выполненной программы или сценария.
По умолчанию способ проверки УРОВНЯ ОШИБКИ выполняется с помощью следующего кода.
Синтаксис
IF %ERRORLEVEL% NEQ 0 (
DO_Something
)
Обычно в конце командного файла используется команда EXIT / B% ERRORLEVEL%, чтобы вернуть коды ошибок из командного файла.
EXIT / B в конце командного файла остановит выполнение командного файла.
Используйте EXIT / B <exitcodes> в конце командного файла для возврата пользовательских кодов возврата.
Переменная среды% ERRORLEVEL% содержит последний уровень ошибки в пакетном файле, который представляет собой последние коды ошибок из последней выполненной команды. В пакетном файле всегда рекомендуется использовать переменные среды вместо постоянных значений, поскольку одна и та же переменная расширяется до разных значений на разных компьютерах.
Давайте посмотрим на быстрый пример того, как проверить коды ошибок из командного файла.
пример
Предположим, у нас есть командный файл Find.cmd со следующим кодом. В коде мы четко упомянули, что если мы не найдем файл с именем lists.txt, тогда мы должны установить уровень ошибки равным 7. Аналогичным образом, если мы видим, что переменная userprofile не определена, мы должны установить код уровня ошибки равным 9.
if not exist c:\lists.txt exit 7
if not defined userprofile exit 9
exit 0
Предположим, у нас есть другой файл с именем App.cmd, который сначала вызывает Find.cmd. Теперь, если Find.cmd возвращает ошибку, в которой он устанавливает уровень ошибки больше 0, он выйдет из программы. В следующем пакетном файле после вызова Find.cnd find он фактически проверяет, не превышает ли уровень ошибки 0.
Call Find.cmd
if errorlevel gtr 0 exit
echo “Successful completion”
Выход
В приведенной выше программе у нас могут быть следующие сценарии в качестве вывода:
Если файл c: \ lists.txt не существует, в выводе консоли ничего не будет отображаться.
Если переменная userprofile не существует, то в выводе консоли ничего не будет отображаться.
Если оба вышеуказанных условия пройдут, в командной строке будет отображаться строка «Успешное завершение».
Петли
В главе о принятии решений мы видели операторы, которые выполнялись одно за другим последовательно. Кроме того, в пакетном сценарии также могут быть реализованы реализации для изменения потока управления в логике программы. Затем они классифицируются в поток управляющих заявлений.
S.No | Петли и описание |
---|---|
1 | Пока реализация заявления
В Batch Script нет прямого оператора while, но мы можем очень легко реализовать этот цикл, используя оператор if и метки. |
2 | Оператор For - реализации списка
Конструкция «FOR» предлагает возможности цикла для командных файлов. Ниже приводится общая конструкция оператора for для работы со списком значений. |
3 | Цикл по диапазонам
Оператор for также может перемещаться по диапазону значений. Ниже приводится общая форма заявления. |
4 | Классическая реализация цикла
Ниже приводится классический оператор for, доступный в большинстве языков программирования. |
Цикл по аргументам командной строки
Оператор for также может использоваться для проверки аргументов командной строки. В следующем примере показано, как можно использовать оператор for для циклического перебора аргументов командной строки.
пример
@ECHO OFF
:Loop
IF "%1"=="" GOTO completed
FOR %%F IN (%1) DO echo %%F
SHIFT
GOTO Loop
:completed
Выход
Предположим, что наш приведенный выше код хранится в файле Test.bat. Вышеупомянутая команда выдаст следующий результат, если командный файл передает аргументы командной строки 1,2 и 3 как Test.bat 1 2 3.
1
2
3
S.No | Петли и описание |
---|---|
1 | Реализация заявления о прерывании
Оператор break используется для изменения потока управления внутри циклов в любом языке программирования. Оператор break обычно используется в конструкциях цикла и используется для немедленного завершения самого внутреннего включающего цикла. |