Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Параметры пакетного файла. Программирование пакетных файлов




Лабораторная работа №2

Программирование командных файлов MS-DOS.

 

Введение: Любая современная операционная система (ОС) обладает набором встроенных команд, с помо­щью которых пользователь может общаться с машиной и выполнять действия в соответствии с определен­ным в системе языковыми правилам. Набор команд и степень их сложности зависят как от возможностей самой операционной системы (ОС), так и от вида интерфейса ЭВМ-пользователь. Операционная система MS_DOS достаточно проста и поэтому в ней содержится минимально необходимый набор команд. С помо­щью встроенных в MS_DOS команд можно, например, распечатать на экране монитора содержимое теку­щего каталога (команда dir), или вывести на экран содержимое тестового файла (команда type). Все команды DOS делятся на внутренние, встроенные в командный интерпретатор command.com, и внешние, располо­женные как правило, в каталоге DOS системного носителя. К внешним командам относятся, например, хо­рошо известные команды format, fdisk, sys, copy. Кроме этого, командный язык DOS позволяет пользова­телю создавать командные файлы, представляющие собой последовательность обычных команд и команд, предназначенных для программирования (for, if, goto, и т.д.)

Цель работы: ознакомление студентов с правилами составления командных файлов и приобретение необ­ходимых навыков системного программирования в процессе их создания.

Рекомендации по составлению отчета: отчет по лабораторной работе следует выполнять в редакторе Microsoft Word. Используйте в окне DOS функцию копирования результатов в буфер обмена c последующей вставкой содержимого буфера в файл отчета. Во время выполнения работы используйте русскоязычный help, расположенный в файле MSD62. Ниже приводится список внутренних, предназначенных для програм­мирования в командных файлах, команд DOS, взятый из файла MSD62, краткая аннотация к ним и примеры использования.

 

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

Команда CALL

Вызывает один командный файл из другого, не завершая его выполнение.

 

CALL [диск:][маршрут]имя_файла [параметры_ком_файла]

 

Например, чтобы запустить файл TEST.BAT из другого командного файла, включите в вызывающий файл команду CALL TEST.

Параметр [диск:][маршрут]имя_файла

задает расположение и имя вызываемого командного файла. Файл должен иметь расширение.BAT."Параметры_ком_файла" - это информация командной строки, необходимая для вызываемого команд­ного файла, включая параметры, имена файлов, подставляемые параметры с %1 по %9 и переменные опе­рационной среды.

Вы можете вызывать командный файл рекурсивно, однако при этом во избежание зацикливания тре­буется обеспечить команду выхода. Не используйте в команде CALL конвейеризацию (|) и символы пере­направления (<<, <, > и >>).

 

Команда CHOICE

Выводит пользователю заданную подсказку для выбора командного файла. Ждет, пока пользователь выберет из указанного набора клавиш. Эту команду можно использовать только в командных файлах.

 

CHOICE [/C[:]клавиши] [/N] [/S] [/T[:]c,nn] [текст]

 

Параметр "текст" задает текст, который вы хотите выводить перед подсказкой. Вопросительный знак необходим только в том случае, если вы включаете в текст перед подсказкой символ /. Если вы не задаете текст, CHOICE выводит на экран только подсказку.

Параметр /C[:]клавиши задает допустимые в подсказке клавиши. При выводе на экран клавиши будут разделяться запятыми, заключаться в квадратные скобки ([]) и сопровождаться вопросительным знаком. Если вы не указываете параметр /C, CHOICE использует по умолчанию YN. Двоеточие (:) не обязательно.

Параметр /N приводит к тому, что CHOICE не выводит подсказку. Однако текст перед подсказкой выво­дится. При задании /N указанные клавиши все равно будут доступны.

/S приводит к различимости в CHOICE регистра символов. Если параметр /S не задан, то для любых за­данных пользователем клавиш будет восприниматься как верхний, так и нижний регистр.

Если задан параметр /T[:]c,nn, то команда CHOICE перед использованием заданной клавиши по умол­чанию делает паузу в течении заданного числа секунд. В /T указываются следующие значения: c -опреде­ляет символ, который спустя nn секунд будет задаваться по умолчанию (этот символ должен быть в наборе символов, заданном в параметре /C); nn - задает продолжительность паузы в секундах (допустимые зна­чения лежат в диапазоне от 0 до 99 - если задается 0, то перед назначением по умолчанию будет пауза).

Первая назначенная вами клавиша возвращает значение 1, вторая - 2, третья - 3 и т.д. Если пользова­тель нажимает клавишу, отсутствующую в списке назначенных клавиш, то CHOICE дает предупреждающий звуковой сигнал (передает на консоль символ 07h).

Если CHOICE обнаруживает состояние ошибки, то возвращает значение 255. Если пользователь пе­редает CTRL+BREAK или CTRL+C, CHOICE возвращает значение, равное 0.

 

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

 

choice /c:ync

 

то пользователь видит следующее:

 

[Y,N,C]?

 

Если вы добавите:

 

choice /c:ync Yes, No, or Cancel

 

то пользователю выводится:

 

Yes, No, or Cancel [Y,N,C]?

 

Если вы зададите команду:

 

choice /c:ync /t:n,7

 

то пользователь видит на экране:

 

[Y,N,C]?

 

Если по истечении 7 секунд пользователь не нажмет клавишу, CHOICE выбирает N и возвращает зна­чение ERRORLEVEL 2. При нажатии соответствующей клавиши до истечения 7 секунд CHOICE возвра­щает значение, соответствующее выбору пользователя.

 

Команда ECHO

Выводит на экран или скрывает текст командного файла при его выполнении. Показывает также, вклю­чено или выключено средство эхоотображения. При запуске командного файла MS-DOS обычно отобра­жает выполняемые команды на экране. Этот режим можно выключить или включить.

 

ECHO [ON¦OFF]

 

Чтобы использовать команду для вывода сообщения, запишите:

 

echo [сообщение]

 

Параметр ON¦OFF определяет, нужно ли включить или выключить эхоотображение. Чтобы вывести на экран текущую установку, задайте команду ECHO без параметра. "Сообщение" задает текст выводимого на экран сообщения.

О приостановке выполнения командного файла рассказывается в описании команды PAUSE.

 

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

При указании команды ECHO OFF в командной строке командная подсказка не выводится на экран. Чтобы вновь ее увидеть, наберите

 

ECHO ON.

 

Для предотвращения эхоотображения конкретной строки вы можете задать перед ней в командном файле символ @. Чтобы отобразить на экране пустую строку, наберите команду ECHO с точкой (ECHO.).

Пробел между ними не указывается.

При использовании команды ECHO нельзя указывать символ конвейеризации (|) или перенаправления (< или >).

 

Команда FOR

Выполняет заданную команду для каждого файла или набора файлов. Эту команду можно использовать в командных файлах или в ответ на командную подсказку.

В первом случае используется синтаксис:

 

FOR %%переменная IN (множество) DO команда [параметры]

 

а во втором случае:

 

FOR %переменная IN (множество) DO команда [параметры]

 

Параметр %%переменная или %переменная представляет подставляемую переменную. Команду FOR заменяет эту переменную текстом каждой строки в заданном множестве, пока команда после ключевого слова DO не обработает все файлы. "Множество" задает один или более файлов или текстовых строк, кото­рые вы хотите обработать с помощью заданной команды. Скобки обязательны. "Команда" задает ко­манду, выполняемую для каждого включенного в множество файла.

"Параметры" задают параметры данной команды (если она их использует). IN и DO - это не параметры, а обязательные ключевые слова команды FOR.

Чтобы избежать путаницы с параметрами командного файла %0 %9, для переменных следует использо­вать любые числа кроме 0 - 9. В простом командном файле вам хватит одного символа, например, %%F. Вложенность команд FOR на одной командной строке не допускается.

Параметр "множество" представляет одну или несколько групп файлов. В нем можно использовать тра­фаретные символы (* и?). Допустимы следующие множества (*.doc), (*.doc *.dat *.rpt), (olg*.doc olgj*.rpt svt*.doc svt*.rpt), (ol??1991.* kr??1991.*).

При использовании команды FOR первое значение в множестве заменяет %%переменную (или %пере­менную), и MS-DOS выполняет для обработки этого значения заданную команду. Этот процесс продолжа­ется, пока MS-DOS не обработает все файлы (или группы файлов) в множестве.

Предположим, вы хотите использовать команду PRINT для распечатки содержимого всех файлов в те­кущем каталоге с расширением.DAT и.RPT. Для этого наберите команду:

 

for %f in (*.dat *.rpt) do print %f

Каждый файл в указанными расширениями подставляется в качестве %F, пока не будет распечатано содержимое всех файлов. В этой команде можно использовать символы конвейеризации и перенаправле­ния. Например, предыдущую команду можно модифицировать следующим образом:

 

for %f in (*.dat *.rpt) do type %f > prn:

 

Команда GOTO

Передает управление MS-DOS на строку в командном файле, которая помечена заданной меткой. MS-DOS продолжает обработку команд, начиная со следующей после метки строки. Эту команду можно ис­пользовать только в командных файлах.

 

GOTO метка

 

Параметр "метка" задает строку командного файла, на которую должна перейти MS-DOS. Метка не мо­жет включать в себя разделители (пробелы, точки с запятой или знаки равенства). GOTO использует пер­вые 8 символов каждой метки.

Метка, заданная вами в команде GOTO, должна совпадать с меткой в командном файле (перед такой меткой указывается двоеточие). Если командный файл не содержит заданной метки, то его обработка пре­кращается, а MS-DOS выводит на экран сообщение:

 

Label not found

(Метка не найдена)

 

GOTO часто используется с командой IF для выполнения перехода по условию. См. пример в описании команды IF.

 

Команда IF

Выполняет в командных файлах условную обработку. Если заданное в команде условие принимает истинное значение, MS-DOS выполняет следующую за условием команду. Если условие ложно, MS-DOS игнорирует команду. IF можно использовать только в командных файлах.

 

IF [NOT] ERRORLEVEL число команда

 

IF [NOT] строка1==строка2 команда

 

IF [NOT] EXIST имя_файла команда

 

Параметр NOT определяет, что MS-DOS должна выполнять команду только в случае ложного значе­ния условия. "ERRORLEVEL число" определяет истинное условие только если предыдущая выполняе­мая COMMAND.COM программа возвращает код выхода, больший или равный заданному числу.

"Команда" задает команду, выполняемую MS-DOS при удовлетворении условия. "Строка1==строка2" определяет истинное условие только при совпадении указанных строк. Строки мо­гут быть лите-ральными или представлять собой переменные (например, %1). Кавычки для литеральных строк не требуются.

 

EXIST имя_файла задает истинное условие, если указанный файл существует.

Приведем пример:

if not errorlevel 1 goto A

...

:A

...

 

Здесь, если код выхода выполненной ранее программы отличен от 1, то выполняются операторы, сле­дующие за меткой A. В противном случае выполняется группа операторов за строкой if.

 

Команда PAUSE

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

 

Press any key to continue...

(Для продолжения нажмите любую клавишу)

 

Эта команда используется только в командных файлах и имеет синтаксис:

 

PAUSE

 

Если при выполнении командного файла вы нажмете клавиши CTRL+C, MS-DOS выведет на экран сообщение:

 

Terminate batch job (Y/N)?

(Прервать командный файл (Да/Нет)?)

 

При нажатии Y обработка командного файла завершается, и управление возвращается операционной системе. Таким образом, вы можете включить команду PAUSE перед той частью командного файла, кото­рую может потребоваться исключить из выполнения. Когда PAUSE приостановит обработку командного файла, вы можете для его завершения нажать CTRL+C.

 

Команда REM

Позволяет вам включать в командный файл или в файл CONFIG.SYS комментарии. Команду REM полезно использовать для временного запрещения команд. (В CONFIG.SYS вместо REM можно ис­пользовать точку с запятой.)

 

REM [строка]

 

Параметр "строка" задает любую строку символов (в комментарии командного файла нельзя указы­вать символы <, > и |).

Команда REM не выводит на экран сообщений (см. описание команды ECHO). Чтобы вывести ком­ментарии на экран, включите в CONFIG.SYS или командный файл команду ECHO ON.

 

Команда SHIFT

Изменяет позицию параметров в командном файле.

 

SHIFT

Команда SHIFT изменяет значения замещаемых параметров с %0 по %9, копируя каждый параметр в предыдущий, то есть значение %1 копируется в %0, %2 - в %1 и т.д. Это полезно для написания команд­ного файла, выполняющего с любым числом параметров одну и ту же операцию. С помощью SHIFT вы можете также построить командный файл, воспринимающий более 10 параметров: те параметры, которые задаются после десятого (%9), будут сдвигаться по одному в %9.

Команда, обратная SHIFT (обратный сдвиг), отсутствует. После выполнения SHIFT вы не сможете восстановить первый параметр (%0), который был перед сдвигом.

Приведем в качестве примера командный файл DIRCOP.BAT, который копирует список файлов в за­данный каталог. В качестве параметра задаются имя каталога и любое число файлов.

 

@echo off

set ddir=%1

:getname

shift

if "%1"=="" goto end

copy %1 %ddir%

goto getname

:end

set ddir=

 

 

Параметры пакетного файла. Программирование пакетных файлов

Как и во всяком языке программирования, командный интерпретатор содержит переменные (параметры), которым могут быть назначены конкретные значения во время выполнения пакетного файла (программы). Переменные могут обозначаться любым набором символов, который не должен начинаться с цифры или служебного символа и не должен содержать пробелы. Например, набор символов temp или темр8 является допустимым для обозначения переменной, а 6temp или temp 8 – недопустимым набором. Переменные ко­мандного интерпретатора обычно называют именованными параметрами. Присвоить значение именован­ным параметрам можно с помощью команды set. Например,

set temp = c:\windows\temp

Прим: команда set без параметров выводит на экран список всех переменных, назначенных на данный момент операционной системой и пакетными файлами с указанием их значений.

Прочитать же содержимое такой переменной можно, например, командой echo. Но при этом название переменной необходимо заключить в знаки %. Например,

echo %temp%

Кроме именованных параметров командный интерпретатор содержит и так называемые позиционные параметры (переменные), которые используются пакетными файлами для ввода собственных параметров (то, что указывается вслед за названием файла). В командной строке имя файла и параметры разделяются один от другого пробелами. Внутри пакетного файла позиционным параметрам соответствуют переменные, обозначаемые символами от %0 до %9, то есть всего таких переменных ровно десять. При этом переменная %0 принимает значение равное названию самого файла. Поэтому фактически первому позиционному пара­метру будет соответствовать переменная %1, второму -%2 и т.д. до %9.

Чтобы проверить данное утверждение, составим пакетный файл start.bat и включим в него следующие строки:

echo off echo Название файла %0 echo Первый позиционный параметр %1 echo Второй позиционный параметр %2 echo Третий позиционный параметр %3

 

а затем выполним его с командной строки

Start.bat p1 p2 p3

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

 





Поделиться с друзьями:


Дата добавления: 2016-09-03; Мы поможем в написании ваших работ!; просмотров: 1761 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Бутерброд по-студенчески - кусок черного хлеба, а на него кусок белого. © Неизвестно
==> читать все изречения...

2408 - | 2330 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.