Команда EXIT – завершить работу командного процессора или текущего командного файла.
Команда EXIT используется для завершения пакетных файлов с установкой значения переменной ERRORLEVEL или для завершения командного процессора CMD.EXE ( для выхода из командной строки), если она выполняется вне пакетного файла.
Формат командной строки:
EXIT [/B] [exitCode]
Параметры командной строки:
/B — Предписывает завершить текущий пакетный файл-сценарий вместо завершения CMD.EXE. Если выполняется вне пакетного файла-сценария, то будет завершена программа CMD.EXE
exitCode — Указывает цифровое значение. Если указан ключ /B, определяет номер для ERRORLEVEL. В случае завершения работы CMD.EXE, устанавливает код завершения процесс с данным номером.
Примеры использования команды EXIT
exit — завершить текущий сеанс CMD
Команда EXIT с параметрами используются, как правило, только в командных файлах. Например, для индикации результата выполнения с установкой значения переменной среды ERRORLEVEL
REM перейти к метке, где выполняется выход с ERRORLEVEL=0
REM перейти к метке, где выполняется выход с ERRORLEVEL=1
REM установить ERRORLEVEL равный 0 и завершить работу
REM установить ERRORLEVEL равный 1 и завершить работу
Параметр /B используется в тех случаях, когда выполняется завершение командного файла, но необходимо продолжить работу командного процессора. Например, когда командный файл 1.bat вызывает командной CALL другой командный файл 2.bat , результат выполнения которого, характеризуется значением переменной окружения ERRORLEVEL . Если в вызываемом командном файле использовать команду EXIT без параметра /B, то будет завершена работа вызываемого файла 2.bat, а также вызывающего файла 1 .bat и интерпретатора CMD.EXE, т.е вместо выхода из вызываемого файла будет полностью завершен сеанс командной строки.
Простейший пример, когда командный файл 1.bat вызывает на выполнение другой командный файл с именем 2.bat и выводит на экран значение ERRORLEVEL, установленное при выходе из вызываемого файла:
echo Batch file 2.bat executed with ERRORLEVEL = %ERRORLEVEL%
Файл 2.bat завершается командой EXIT с установкой значения ERRORLEVEL, равного 128:
При выполнении командного файла 1.bat на экран будет выведено сообщение:
Batch file 2.bat executed with ERRORLEVEL = 128
Попробуйте убрать параметр /B в команде EXIT командного файла 2.bat и оцените полученный результат.
Команда CALL
Команда CALL используется для вызова из пакетного файла другого пакетного файла с возможностью передачи ему входных параметров.
Формат командной строки CALL:
CALL [диск:][путь]имя_файла [параметры]
параметры — набор параметров командной строки, необходимых пакетному файлу.
При включенном режиме расширенной обработки команд, CALL допускает использование меток в качестве адресата вызова. Применяется следующий синтаксис:
CALL :метка аргументы
При вызове создается новый контекст текущего пакетного файла с заданными аргументами, и управление передается на инструкцию, расположенную сразу после метки.
CALL C:\SCRIPTS\test.bat — вызвать командный файл C:\SCRIPTS\test.bat
CALL C:\SCRIPTS\test.bat param1 param2 — вызвать командный файл C:\SCRIPTS\test.bat и передать ему параметры param1 и param2
CALL :M1 param1 — вызвать процедуру, внутри текущего пакетного файла, по метке M1 и передать ей параметр param1
Для иллюстрации примеров использования команды CALL можно воспользоваться пакетным файлом, например под именем 1.bat следующего содержания:
CALL 2.bat IP 192.168.1.1
ECHO NEWSET = %NEWSET%
Файл 1.bat будет вызывать файл 2.bat и передавать ему 2 параметра — строки IP и 192.168.1.1. И вызываемый файл, например, выполнит создание новой переменной с именем NEWSET вида «IP = 192.168.1.1» Для этого в файле 2.bat используется команда SET:
После выполнения файла 2.bat будет выполнен возврат в файл 1.bat и команда ECHO выведет на экран значение переменной NEWSET, сформированное вызываемым командным файлом.
При использовании вызова процедуры по метке в командном файле, есть некоторые особенности. Для примера, создадим командный файл, в котором имеется вызываемая подпрограмма, которая должна вычислить сумму двух чисел, передаваемых ей в качестве параметров, и присвоить результат переменной Rezult :
REM вызов подпрограммы для суммирования чисел 100 и 2
call :M1 100 2
REM Вывод результата
echo Результат = %Rezult%
pause
exit
:M1
SET /A Rezult=%1+%2
exit /b
exit exit
Область применения: Windows Server (половина ежегодного канала), Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012 Applies to: Windows Server (Semi-Annual Channel), Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012
Выход из интерпретатора команд или текущего пакетного скрипта. Exits the command interpreter or the current batch script.
Синтаксис Syntax
Параметры Parameters
Параметр Parameter | Описание Description |
---|---|
/b /b | Выход из текущего пакетного скрипта вместо выхода из Cmd.exe. Exits the current batch script instead of exiting Cmd.exe. Если выполняется из-за пределов пакетного скрипта, выполняет выход из Cmd.exe. If executed from outside a batch script, exits Cmd.exe. |
Указывает числовое число. Specifies a numeric number. Если указан параметр /b , переменной среды ERRORLEVEL присваивается это число. If /b is specified, the ERRORLEVEL environment variable is set to that number. Если интерпретатор команд закрывается, код завершения процесса устанавливается в это число. If you are quitting the command interpreter, the process exit code is set to that number. | |
/? /? | Отображение справки в командной строке. Displays help at the command prompt. |
Примеры Examples
Чтобы закрыть интерпретатор команд, введите: To close the command interpreter, type:
Windows command call exit
Calls one batch program from another without stopping the parent batch program. The call command accepts labels as the target of the call
Call has no effect at the command prompt when it is used outside of a script or batch file.
Syntax
Parameters
]
Batch parameters
The batch script argument references (%0, %1, . ) are listed in the following tables.
Using the %* value in a batch script refers to all the arguments (for example, %1, %2, %3. ).
You can use the following optional syntaxes as substitutions for batch parameters (%n):
Batch Parameter | Description |
---|---|
% 1 | Expands %1 and removes surrounding quotation marks. |
% f1 | Expands %1 to a fully qualified path. |
% d1 | Expands %1 to a drive letter only. |
% p1 | Expands %1 to a path only. |
% n1 | Expands %1 to a file name only. |
% x1 | Expands %1 to a file name extension only. |
% s1 | Expands %1 to a fully qualified path that contains short names only. |
% a1 | Expands %1 to the file attributes. |
% t1 | Expands %1 to the date and time of file. |
% z1 | Expands %1 to the size of the file. |
% $PATH:1 | Searches the directories listed in the PATH environment variable, and expands %1 to the fully qualified name of the first directory found. If the environment variable name is not defined or the file is not found by the search, then this modifier expands to the empty string. |
The following table shows how you can combine modifiers with the batch parameters for compound results:
Batch Parameter with Modifier | Description |
---|---|
% dp1 | Expands %1 to a drive letter and path only. |
% nx1 | Expands %1 to a file name and extension only. |
% dp$PATH:1 | Searches the directories listed in the PATH environment variable for %1, and then expands to the drive letter and path of the first directory found. |
% ftza1 | Expands %1 to display output similar to the dir command. |
In the above examples, %1 and PATH can be replaced by other valid values. The %
syntax is terminated by a valid argument number. The %
modifiers cannot be used with %*.
Remarks
Using batch parameters:
Batch parameters can contain any information that you can pass to a batch program, including command-line options, file names, the batch parameters %0 through %9, and variables (for example, %baud%).
Using the parameter:
By using call with the parameter, you create a new batch file context and pass control to the statement after the specified label. The first time the end of the batch file is encountered (that is, after jumping to the label), control returns to the statement after the call statement. The second time the end of the batch file is encountered, the batch script is exited.
Using pipes and redirection symbols:
Do not use pipes (|) or redirection symbols ( or > ) with call.
Making a recursive call
You can create a batch program that calls itself. However, you must provide an exit condition. Otherwise, the parent and child batch programs can loop endlessly.
Working with command extensions
If command extensions are enabled, call accepts as the target of the call. The correct syntax is call :
Процедуры и Функции CALL
Доброго времени суток Уважаемые Профи !
Помогите разобраться с процедурами CALL
Есть бат файл :
1) Не могу сообразить как разграничить между собой процедуры :sub и :MOD1
при выполнении процедуры :sub также выполняется процедура :MOD1 ?
2) чем отличается Exit от Exit /b ?
Заранее всем Спасибо!
Вызов функции по команде Call
Суть вопроса: как сделать так, чтобы функции, вызывающиеся через call : , но не прописанные в самом.
Как организовать удаленный вызов процедуры (Remote Procedure Call) от клиента к серверу?
Суть проблемы: У меня в MVC приложении есть 4 контроллера по 2-3 метода в каждом. Сейчас я делаю.
Функции и процедуры. При помощи процедуры записать слова задом наперед
Дана строка S, состоящая из не менее 5 слов. При помощи процедуры записать слова задом наперед.
Задачник Абрамян. Процедуры и функции. Процедуры с числовыми параметрами
Описать процедуру RectPS(x1, y1, x2, y2, P, S), вычисляющую периметр P и площадь S прямоугольника.
call /? При вызове создается новый контекст текущего пакетного файла с заданными аргументами, и управление передается на инструкцию, расположенную сразу после метки. Для выхода из такого пакетного файла необходимо дважды достичь его конца. Первый выход возвращает управление на инструкцию, расположенную сразу после строки CALL, а второй выход завершает выполнение пакетного файла. |
exit /? /B Предписывает завершить текущий пакетный файл-сценарий вместо завершения CMD.EXE. Если выполняется вне пакетного файла-сценария, то будет завершена программа CMD.EXE |
Т.е. exit /b нужно вдобавок ставить 20-й строкой. А первый exit можно и без /b.
Насколько я понял нужно обязательно указать два раза Exit
1-й после вызова блока процедур CALL
2-й и в конце описания процедур CALL
Есть ли возможность циклично с помощью только процедур CALL чередовать Два сценарных пакета ?