Учебники

Пакетный скрипт — Код возврата

По умолчанию, когда выполнение командной строки завершено, оно должно либо возвращать ноль, если выполнение завершается успешно, либо ненулевое, если выполнение не выполняется. Когда пакетный скрипт возвращает ненулевое значение после сбоя выполнения, ненулевое значение будет указывать, что такое номер ошибки. Затем мы будем использовать номер ошибки, чтобы определить ее причину и соответствующим образом ее устранить.

Ниже приведены общий код выхода и их описание.

Код ошибки Описание
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.

9009

0x2331

221225495

0xC0000017

-1073741801

Недостаточно виртуальной памяти.

Это указывает на то, что в Windows не хватает памяти.

3221225786

0xC000013A

-1073741510

3221225794

0xc0000142

-1073741502

Уровень ошибки

Переменная среды% 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 он на самом деле проверяет, не превышает ли уровень ошибки больше 0.

Call Find.cmd

if errorlevel gtr 0 exit 
echo Successful completion

Выход

В приведенной выше программе мы можем использовать следующие сценарии:

  • Если файл c: \ lists.txt не существует, в выводе консоли ничего не будет отображаться.

  • Если переменная userprofile не существует, в выводе консоли ничего не будет отображаться.

  • Если оба вышеуказанных условия выполнены, в командной строке будет отображена строка «Успешное завершение».

Если файл c: \ lists.txt не существует, в выводе консоли ничего не будет отображаться.

Если переменная userprofile не существует, в выводе консоли ничего не будет отображаться.

Если оба вышеуказанных условия выполнены, в командной строке будет отображена строка «Успешное завершение».

Loops

В главе, посвященной принятию решений, мы увидели утверждения, которые последовательно выполнялись одно за другим. Кроме того, реализации также могут быть выполнены в пакетном скрипте, чтобы изменить поток управления в логике программы. Затем они классифицируются в поток контрольных операторов.

S.No Петли и описание
1 При реализации заявления

В Batch Script нет прямого оператора while, но мы можем очень легко реализовать этот цикл, используя оператор if и метки.

2 Для заявления — список реализаций

Конструкция «FOR» предлагает возможности зацикливания для пакетных файлов. Ниже приведена общая конструкция оператора for для работы со списком значений.

3 Цикл по диапазонам

Оператор for также может перемещаться по диапазону значений. Ниже приводится общая форма заявления.

4 Классика для реализации цикла

Ниже приводится классический оператор for, который доступен в большинстве языков программирования.

В Batch Script нет прямого оператора while, но мы можем очень легко реализовать этот цикл, используя оператор if и метки.

Конструкция «FOR» предлагает возможности зацикливания для пакетных файлов. Ниже приведена общая конструкция оператора for для работы со списком значений.

Оператор for также может перемещаться по диапазону значений. Ниже приводится общая форма заявления.

Ниже приводится классический оператор 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

Оператор break используется для изменения потока управления внутри циклов в любом языке программирования. Оператор break обычно используется в конструкциях цикла и используется для немедленного завершения самого внутреннего замкнутого цикла.