русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Команда IF


Дата добавления: 2013-12-23; просмотров: 2832; Нарушение авторских прав


Команда GOTO

Команда CALL

Есть два варианта вызова одного КФ из другого:

- с возвратом в точку вызова

- без возврата в точку вызова.

Обеспечивает вызов одного командного файла из другого с последующим возвратом в точку вызова

Синтаксис

CALL file [arglist]

 

По ней производится запуск командного файла, заданного аргументом file с передачей ему указанных аргументов (arglist). Этот файл должен существовать и иметь расширение ВАТ. В спецификации file расширение можно не указывать.

 

Пример: CALL C:\BAT\C В:

 

 

Предназначена для безусловного перехода к строке командного файла с заданной меткой.

Синтаксис:

GOTO [:]метка

 

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

Метка – это последовательность алфавитно-цифровых символов без использования разделителей (специальных символов). Длина метки не ограничивается, но DOS учитывает только первые 8 символов. Строка с меткой должна начинаться с символа :, непосредственно за которым указывается сама метка. За меткой (через пробел) может следовать любая последовательность символов, воспринимаемая комментарием.

Замечания:

— строку с меткой можно использовать для комментирования командного файла (достаточно начать строку символом :, а не командой REM);

— на ошибочность задания метки в строке командного файла (но не в команде GOTO) DOS не реагирует, поэтому в «псевдокомментарии» допустимы любые символы;

— указание в GOTO несуществующей метки используется для прекращения выполнения командного файла;

— любая строка командного файла, начинающаяся с двоеточия, при его обработке игнорируется.



 

Пример:

@ECHO OFF

:AGAIN Простой циклический командный файл

ECHO Нажмите Ctrl-Break для остановки

GOTO AGAIN

Простые команды закончились.

 

Предназначена для организации ветвлений в командных файлах.

Синтаксис:

 

IF [NOT] условие process

Команду IF можно прочитать следующим образом: если [не] условие, то выполнить process.

Команда IF позволяет выполнить или пропустить указанный в ней process в зависимости от заданного условия. При отсутствии NOT process выполняется, если условие удовлетворяется. При задании NOT process выполняется, если условие не удовлетворяется. В других случаях process не выполняется, а просто пропускается и осуществляется интерпретация следующей строки КФ по тексту.

Условие может быть задано одним из следующих способов:

- EXIST file — существует, по крайней мере, один файл, сопоставимый со спецификацией шаблона file,

- строка1 == строка2 — анализ совпадения символьных строк строка1 и строка2, после замещения в них параметров аргументами. Строки могут содержать любые символы, за исключением пробел, запятая, =, ;, <, > и |. В ходе сравнения проводится различие между одноименными строчными и прописными буквами. Если в этих строках имеются символы &4-&9, то вместо них подставляются параметры командного файла;

- ERRORLEVEL n — последняя выполненная программа или внешняя команда DOS (но не обязательно по указаниям из предыдущей строки командного файла) выдала код возврата, не меньший (не обязательно равный!) чем целое число n;

В связи с тем, что код возврата анализируется не на равенство, а на больше либо равно, для организации разветвления по многим направлениям следует использовать следующую схему:

 

process

IF ERRORLEVEL n GOTO меткаN

...

IF ERRORLEVEL 2 GOTO метка2

IF ERRORLEVEL 1 GOTO мстка1

REM IF ERORLEVEL 0

...

GOTO END

:меткаl

...

GOTO END

:метка2

...

GOTO END

:меткаN

...

:END

 

Правило 1. Анализ кода возврата нужно начинать с наибольшего возможного значения.

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

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

Замечания:

1. Если после условия в команде IF указать спецификацию командного файла, то возврат обратно (как после CALL) не произойдет;

2. Команды IF могут быть вложенными;

3. Любую программу можно организовать таким образом, чтобы она выдавала код возврата, зависящий от каких-либо условий, что позволяет (с привлечением команды IF) создавать интерактивные командные файлы;

4. Некоторые внешние команды также выдают коды возврата, которые можно использовать для организации разветвлений в командных файлах;

5. Если в качестве одной из строк конструкции string1== string2 требуется задать пустую строку, то следует обе строки заключить в одни и те же разделители, например: .string1. ==.., “string1”==””, /string1/ ==// или даже /string1==/.

Примеры:

 

1)IF NOT EXIST D:\B.COM COPY C:\BASIC\B.COM D: - если файла

B.COM на диске D нет, то скопировать его туда c диска С;

 

2)IF %1==LEX CHDIR C:\EDIT\LEX

IF %l==lex CHDIR C:\EDIT\LEX

— установить на диске С текущим каталог \EDIT\LEX, если первым аргументом командного файла задан каталог LEX или lex;

 

3) BACKUP С:\*.* A: /S

IF ERRORLEVEL 3 GOTO T — если команда BACKUP завершается с кодом возврата 3 или выше, то перейти к метке T;

 

4) IF “%1”==”” GOTO M1

CD %1

GOTO M2

:M1

CD C:\LANG\TP

:М2 — если аргумент при запуске командного файла задан, то установить текущий каталог по нему; в противном случае изменить текущий каталог на C\LANG\TP;

 

 

5) @ECHO OFF

:BEGIN

FORMAT A: /S

IF NOT ERRORLEVEL 1 GOTO END

ECHO Системный диск не создан

GOTO BEGIN

:END

ECHO Системный диск создан — форматировать диск А и переносить на него систему до тех пор, пока эти операции не завершатся успешно (с кодом возврата 0)

 

6) IF /%1 == / CALL TEST M.TXT — если аргумент при запуске командного файла не задан, то выполнить командный файл TEST.BAT с аргументом M.TXT.

 



<== предыдущая лекция | следующая лекция ==>
Команда REM | Команда FOR


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.