Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Приостановка выполнения командных файлов
Для того, чтобы вручную прервать выполнение запущенного bat-файла, нужно нажать клавиши <Ctrl>+<C> или <Ctrl>+<Break>. Однако часто бывает необходимо программно приостановить выполнение командного файла в определенной строке с выдачей запроса на нажатие любой клавиши. Это делается с помощью команды PAUSE. Перед запуском этой команды полезно с помощью команды ECHO информировать пользователя о действиях, которые он должен произвести. Например: ECHO Вставьте дискету в дисковод A: и нажмите любую клавишуPAUSEКоманду PAUSE обязательно нужно использовать при выполнении потенциально опасных действий (удаление файлов, форматирование дисков и т.п.). Например, ECHO Сейчас будут удалены все файлы в C:\Мои документы!ECHO Для отмены нажмите Ctrl-CPAUSEDEL "C:\Мои документы\*.*"
Вызов внешних командных файлов Из одного командного файла можно вызвать другой, просто указав его имя. Например: @ECHO OFF CLS REM Вывод списка log-файлов DIR C:\*.log REM Передача выполнения файлу f.bat f.bat COPY A:\*.* C:\ PAUSE Однако в этом случае после выполнения вызванного файла управление в вызывающий файл не передается, то есть в приведенном примере команда COPY A:\*.* C:\ (и все следующие за ней команды) никогда не будет выполнена. Для того, чтобы вызвать внешний командный файл с последующим возвратом в первоначальный файл, нужно использовать специальную команду CALL файл Например: @ECHO OFF CLS REM Вывод списка log-файлов DIR C:\*.log REM Передача выполнения файлу f.bat CALL f.bat COPY A:\*.* C:\ PAUSE В этом случае после завершения работы файла f.bat управление вернется в первоначальный файл на строку, следующую за командой CALL (в нашем примере это команда COPY A:\*.* C:\). Операторы перехода Командный файл может содержать метки и команды GOTO перехода к этим меткам. Любая строка, начинающаяся с двоеточия:, воспринимается при обработке командного файла как метка. Имя метки задается набором символов, следующих за двоеточием до первого пробела или конца строки. Приведем пример. Пусть имеется командный файл следующего содержания: @ECHO OFF COPY %1 %2 GOTO Label1 ECHO Эта строка никогда не выполнится :Label1 REM Продолжение выполнения DIR %2 После того, как в этом файле мы доходим до команды GOTO Label1 его выполнение продолжается со строки REM Продолжение выполнения
В команде перехода внутри файла GOTO можно задавать в качестве метки перехода строку:EOF, которая передает управление в конец текущего пакетного файла (это позволяет легко выйти из пакетного файла без определения каких-либо меток в самом его конце). В качестве команды в строке командного файла можно использовать также командный файл. Причем, для передачи с возвратом обратно к точке выполнения вызывающего командного файла используется команда CALL. Попробуйте создать командный файл test.bat, следующего содержания: @ECHO OFF В этом же каталоге, создайте второй файл под именем 1.bat, содержащий команду PAUSE, приостанавливающую выполнение командного файла до нажатия любой клавиши. @ECHO OFF При выполнении командного файла test.bat будет выдано на экран сообщение Вызываемый командный файл может создавать переменные и присваивать им определенные значения, которые будут доступны для обработки в вызывающем файле. Попробуйте изменить файл test.bat на следующее содержимое: @ECHO OFF а в файле 1.bat на следующее @ECHO OFF Кстати, используя передачу управления командному файлу, можно организовать его зацикливание. Попробуйте добавить в конец файла test.bat строку: CALL test.bat Выйти из зацикливания командного файла можно по нажатию комбинации CTRL-Break.
Таким образом, подобное использование команды CALL очень похоже на обычный вызов подпрограмм (процедур) в алгоритмических языках программирования. Операторы условия С помощью команды IF … ELSE (ключевое слово ELSE может отсутствовать) в пакетных файлах можно выполнять обработку условий нескольких типов. При этом если заданное после IF условие принимает истинное значение, система выполняет следующую за условием команду (или несколько команд, заключенных в круглые скобки), в противном случае выполняется команда (или несколько команд в скобках), следующие за ключевым словом ELSE(также как в языках программирования).
7.1 Первый тип условия. Проверка значения переменной Первый тип условия используется обычно для проверки значения переменной. Для этого применяются два варианта синтаксиса команды IF: IF [NOT] строка1==строка2 команда1 [ELSE команда2] (квадратные скобки указывают на необязательность заключенных в них параметров) или IF [/I] [NOT] строка1 оператор_сравнения строка2 команда Рассмотрим сначала первый вариант. Условие строка1==строка2 (здесь необходимо писать именно два знака равенства) считается истинным при точном совпадении обеих строк. Параметр NOT указывает на то, что заданная команда выполняется лишь в том случае, когда сравниваемые строки не совпадают. Строки могут быть литеральными или представлять собой значения переменных (например, %1 или %TEMP%). Кавычки для литеральных строк не требуются. Например, IF %1==%2 ECHO Параметры совпадают! IF %1==Петя ECHO Привет, Петя! Отметим, что при сравнении строк, заданных переменными, следует проявлять определенную осторожность. Дело в том, что значение переменной может оказаться пустой строкой, и тогда может возникнуть ситуация, при которой выполнение командного файла аварийно завершится. Например, если вы не определили с помощью команды SET переменную MyVar, а в файле имеется условный оператор типа IF %MyVar%==C:\ ECHO Ура!!! то в процессе выполнения вместо %MyVar% подставится пустая строка и возникнет синтаксическая ошибка. Такая же ситуация может возникнуть, если одна из сравниваемых строк является значением параметра командной строки, так как этот параметр может быть не указан при запуске командного файла. Поэтому при сравнении строк нужно приписывать к ним в начале какой-нибудь символ, например: IF -%MyVar%==-C:\ ECHO Ура!!! С помощью команд IF и SHIFT можно в цикле обрабатывать все параметры командной строки файла, даже не зная заранее их количества. Например, следующий командный файл (назовем его primer.bat) выводит на экран имя запускаемого файла и все параметры командной строки: @ECHO OFF ECHO Выполняется файл: %0 ECHO. ECHO Файл запущен со следующими параметрами... REM Начало цикла :BegLoop IF -%1= =- GOTO ExitLoop ECHO %1 REM Сдвиг параметров SHIFT REM Переход на начало цикла GOTO BegLoop :ExitLoop REM Выход из цикла ECHO. ECHO Все. Если запустить primer.bat с четырьмя параметрами: primer.bat А Б В Г то в результате выполнения на экран выведется следующая информация: Выполняется файл: primer.bat
Файл запущен со следующими параметрами: А Б В Г
Все. Рассмотрим теперь оператор IF в следующем виде: IF [/I] строка1 оператор_сравнения строка2 команда Синтаксис и значение операторов_сравнения представлены в табл. 3.2.
Приведем пример использования операторов сравнения: @ECHO OFF CLS IF -%1 EQL –Вася ECHO Привет, Вася! IF -%1 NEQ –Вася ECHO Привет, но Вы не Вася! Ключ /I, если он указан, задает сравнение текстовых строк без учета регистра. Ключ /I можно также использовать и в форме строка1==строка2 команды IF. Например, условие IF /I DOS==dos … будет истинным.
|
||||||||||||||||||||||
Последнее изменение этой страницы: 2019-11-02; просмотров: 545; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.190.159.10 (0.015 с.) |