Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Операционная система OS/2 Warp

© Александр Фролов, Григорий Фролов
Том 20, М.: Диалог-МИФИ, 1993, 271 стр.

[Назад] [Содеожание] [Дальше]

4.6. Пакетные файлы

В операционной системе IBM OS/2 используются пакетные файлы двух типов - bat-файлы для сеансов DOS и cmd-файлы для текстовых сеансов IBM OS/2.

Первые из них хорошо знакомы вам из руководств по операционной системе DOS. Пакетные файлы, предназначенные для текстовых сеансов IBM OS/2, так же как и bat-файлы, представляют собой текстовые файлы, содержащие строки команд. Эти строки последовательно считываются и интерпретируются командным процессором command.com операционной системы IBM OS/2.

Помимо команд IBM OS/2 строки пакетных cmd-файлов могут содержать операторы, предназначенные, например, для организации процедур и циклов, безусловных переходов и т. д. В этом разделе мы приведем краткое описание таких операторов.

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

CALL

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

Вызываемому пакетному файлу можно передать параметры, например:

call setdb %1 %2

В этом примере вызывается пакетный файл setdb.cmd.

CMD

С помощью оператора CMD можно запустить еще один командный процессор. Для завершения работы запущенного командного процессора введите команду EXIT.

Приведем синтаксис оператора CMD:

CMD [Путь_Для_Переменной_COMSPEC] [Параметры]

В операторе CMD вы можете задать путь, который будет использован для инициализации переменной среды COMSPEC. Другие параметры оператора CMD приведены ниже:

Параметр Описание
/Q Запуск второго командного процессора в режиме NO ECHOECHO без выдачи сообщений. Этот параметр нельзя указывать после параметров /K и /C
/S Отключение возможности прерывания работы программы при помощи комбинации клавиш <Control+C>
/K "Строка" Если указан этот параметр, запускается еще один командный процессор, после чего ему передается строка. Этой строкой может быть имя программы. Когда такая программа завершает свою работу, второй командный процессор продолжает свою работу до тех пор, пока пользователь не введет команду EXITEXIT
/C "Строка" Аналогично предыдущему, но после выполнения программы второй командный процессор завершает свою работу без каких-либо дополнительных действий со стороны пользователя

COMMAND

Запуск другого командного процессора DOS. Оператор используется также, как и в среде DOS. Приведем список возможных параметров:

Параметр Описание
/P Загруженная дополнительная копия командного процессора DOSDOS остается в памяти постоянно до перезапуска IBM OS/2 Warp
/E:xxx Установка размера блока памяти, который используется для хранения переменных среды. Можно указывать значения от 160 до 32768 байт
/K Строка Если указан этот параметр, запускается еще один командный процессор, после чего ему передается строка для интерпретации. Когда интерпретация строки закончена, второй командный процессор продолжает свою работу до тех пор, пока пользователь не введет команду EXITEXIT
/C Строка Аналогично предыдущему, но после интерпретации строки второй командный процессор завершает свою работу без каких-либо дополнительных действий со стороны пользователя

ECHO

С помощью этого оператора вы можете разрешить или запретить отображение на экране интерпретируемых команд, а также вывести какое-нибудь сообщение:

ECHO ON
TYPE C:\CONFIG.SYS
ECHO Press any key...
ECHO OFF

SETLOCAL

Оператор SETLOCAL позволяет определить в пакетном файле переменные среды, а также установить текущий диск и каталог локально по отношению к текущему пакетному файлу. Например:

setlocal
d:
cd test
set STRANGE=ZZ:\...
endlocal

Фрагмент заканчивается оператором endlocal, который ограничивает область локального определения.

ENDLOCAL

Оператор ENDLOCAL ограничивает локальную область определения текущего диска, каталога и переменных среды (см. выше описание оператора SETLOCAL).

EXIT

Команда завершает работу копии программы командного процессора cmd.exe или command.com, возвращая управление предыдущей копии, если она есть в памяти. Если же такой копии нет, текстовый сеанс закрывается и пользователь возвращается к работе в среде Workplace Shell.

EXTPROC

С помощью оператора EXTPROC пользователь может назначить для пакетного файла собственный командный процессор, указав в качестве параметра путь к соответствующему программному файлу. Например:

extproc c:\cmdproc\cmdplus.exe

Если для обработки пакетного файла вы будете использовать свой собственный командный процессор, в первой строке такого файла необходимо расположить команду EXTPROC.

FOR

С помощью оператора FOR можно организовать многократное выполнение одной и той же команды (цикл).

Синтаксис оператора FOR приведен ниже:

FOR %%c IN (Набор_Параметров) DO Команда

Здесь вместо переменной c можно указывать любые символы, включая цифры от 0 до 9. Набор параметров представляет собой произвольную последовательность строк, разделенных пробелом. В качестве команды можно указывать любую команду IBM OS/2.

В процессе выполнения цикла переменной %%c по очереди присваиваются значения из набора параметров, указанных в скобках. Для каждого такого значения выполняется команда, указанная после ключевого слова DO.

Например, для того чтобы организовать многократный вызов команды PRINT с целью печати нескольких файлов, можно использовать следующий цикл:

do %%f IN (text1.txt text2.txt text3.txt) DO print %%f

GOTO

Оператор GOTO позволяет организовать переход в пакетном файле. Он используется таким же образом, что и в пакетных файлах DOS:

goto Exit
....
:Exit

IF

Оператор IF предназначен для выполнения команд (например, организации условных переходов в командных файлах) по результату проверки кода завершения команды, существования файла или равенства двух переменных среды.

Синтаксис оператора IF представлен ниже:

IF [NOT] Условие Команда

Можно использовать три варианта записи условия:

ERRORLEVEL Число
Строка1==Строка2
EXIST Путь_К_Файлу

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

Если перед условием записывается ключевое слово NOT, результат проверки условия инвертируется (меняется на противоположный).

В качестве команды можно указывать любую команду IBM OS/2.

PAUSE

Оператор PAUSE приостанавливает вывод результата интерпретации командного файла на экран. При этом появляется следующее сообщение:

Press any key when ready...

REM

Оператор REM отмечает строку как комментарий. В процессе интерпретации командного файла строки комментария пропускаются.

SHIFT

При помощи этой команды можно выполнить сдвиг параметров. Это может потребоваться в том случае, когда нужно обработать более 10 параметров. Аналогичная команда имеется и в операционной системе DOS.

[Назад] [Содеожание] [Дальше]