Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
f / Лаб работа 2 Интерпретатор команд строки Windows ХР часть 2.doc
Скачиваний:
57
Добавлен:
10.06.2015
Размер:
204.29 Кб
Скачать

1.1.6 Ввод значения переменной с клавиатуры

Ввод значения переменной при выполнении КФ выполняется оператором SET с ключом /P. Например, для ввода значения переменной M следует использовать команду

SET /P M=[введите M]

Текст подсказки [введите М] выводится на экран.

1.1.7. Связывание времени выполнения для переменных

При использовании группировки команд c помощью круглых скобок (например, в операторе IF) нужно учитывать, что переменные среды в КФ используются в режиме раннего связывания. С точки зрения логики выполнения КФ это может привести к ошибкам. Например, рассмотрим КФ 1.cmd:

SET a=1

ECHO a=%a%

SET a=2

ECHO a=%a%

и КФ 2.cmd:

SET a=1

ECHO a=%a%

(SET a=2

ECHO a=%a% )

:: использованы () для группировки команд

По логике результат выполнения КФ файл1 и файл2 должен быть одинаковым - на экран должны быть выведены строки:"a=1" и "a=2". Реально такработает только файл 1.cmd, а файл 2.cmd два раза выведет строку"a=1".

Для правильного выполнения КФ, в котором используется группировка команд, для получения значения переменной вместо знака процента (%)необходимо использовать восклицательный знак (!) и предварительно включить режим связывания времени выполнения командойSETLOCAL ENABLEDELAYEDEXPANSION.Таким образом, для корректной работы файл 2.cmd должен иметь следующий вид: (рекомендуется проверить)

SETLOCAL ENABLEDELAYEDEXPANSION

SET a=1

ECHO a=%a%

(SET a=2

ECHO a=!a!)

1.1.8. Прерывание и приостановка выполнения командных файлов

Для того, чтобы вручную прервать выполнение запущенного bat-файла, нужно нажать клавиши <Ctrl>+<C> или <Ctrl>+<Break>. Часто бывает необходимо программно приостановить выполнение КФ в определенной строке с выдачей запроса на нажатие любой клавиши. Для этого используется команда PAUSE.

1.1.9. Вызов внешних командных файлов. Оператор call

Из одного КФ можно вызвать другой, указав его имя. Например:

:: Вывод списка log-файлов

DIR C:\*.log

:: Передача выполнения файлу f.bat

f.bat

COPY D:\*.* C:\

PAUSE

В этом случае после выполнения КФ f.bat управление в вызывающий файл не передается. Для того, чтобы вызвать внешний КФ с возвратом в первоначальный файл, нужно использовать оператор CALL файл. Например:

:: Вывод списка cmd-файлов

DIR C:\*.cmd

::Передача выполнения файлу f.bat

CALL f.bat

COPY D:\*.* C:\

PAUSE

В этом случае после завершения работы файла f.bat управление вернется в первоначальный файл на строку, следующую за командойCALL(в примере это команда COPY D:\*.* C:\).

1.1.11. Оператор перехода goto

КФ может содержать метки и операторыGOTOперехода к этим меткам. Любая строка, начинающаяся с двоеточия :, воспринимается при обработке КФ как метка.

Пример 4. Пусть имеется КФ следующего содержания:

COPY %1 %2

GOTO Label1

ECHO Эта строка никогда не выполнится

:Label1

В операторе GOTO можно задавать в качестве метки перехода строку :EOF, которая передает управление в конец текущего КФ.

Для перехода к метке внутри КФ кроме команды GOTO также можно использовать и рассмотренный выше оператор CALL :метка аргументы

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