Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornaya_rabota_3.doc
Скачиваний:
3
Добавлен:
21.11.2019
Размер:
88.06 Кб
Скачать

Лабораторная работа №2 Команды переадресации, конвейеры, фильтры. Файлы пакетной обработки данных. Командаы пакетных файлов.

  1. Задание

Приобретение практических навыков работы с командами переадресации, конвейерами и внешними командами фильтров: find, more, sort. А так же навыков создания и применения файлов пакетной обработки.

  1. Теоретические сведения

1. Переназначения ввода-вывода

Начиная с версии 2.0, DOS поддерживает UNIX-подобную концепцию переназначения устройств стандартного ввода и стандартного вывода. Эта концепция определяет способ, которым одна программа направляет свой вывод в другую или перехватывает ввод другой программы.

Если не переназначен, стандартный ввод вводит с клавиатуры, а стандартный вывод выводит на экран; и тот, и другой являются функциями устройства con. Родительский процесс (такой как command.com) может переназначить стандартный ввод,стандартный вывод или и тот, и другой,перед тем как передать управление порожденному процессу. Это предоставляет мощный способ передачи информации от процесса к процессу при минимальных программных издержках.

Интерпретатор команд DOS проверяет каждую командную строку на символы переназначения ввода-вывода, прежде чем выполнять внутреннюю команду или вызывать программу:

процесс < файл Выполняет процесс; ввод "с клавиатуры" берется из файла

процесс > файл Выполняет процесс; вывод "на экран" идет в файл

процесс >> файл Выполняет процесс; вывод "на экран" добавляется в файл

процесс1 | процесс2 1. Выполняет процесс1, вывод идет во временный файл

2. Выполняет процесс2, ввод берется из временного файла

3. Удаляет временный файл

Переназначение вывода символом '>' создает выходной файл, усекая его длину до 0 до того, как писать в него. Используйте '>>', чтобы добавить вывод в конец существующего файла.

Пример:

Запись списка файлов и каталогов находящихся на C:\ в файл с именем

dir_file.txt

C:\> dir c:\ > dir_file.txt

Пример:

Необходимо сбросить на дискету имена всех фалов находящихся на диске c: и d:

C:\> dir /s /b c:\ > a:\allfiles.txt

C:\> dir /s /b d:\ >> a:\allfiles.txt

Можно направлять вывод на устройство nul, чтобы избавиться от некоторых сообщений DOS:

Пример:

подавляет сообщение "x File(s) copied" после коипрования

C:\> copy *.com D: > nul

Примечание:

command.com игнорирует символы переназначения, заключенные в кавычки:

rem Я использую символ больше-чем ">" в этом комментарии

2. Конвейеры

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

Можно использовать конвейеры ("|"), чтобы сцепить вместе несколько программ и команд DOS:

Пример:

вывести список файлов, отсортировать и записать в файл myfile.txt имена файлов

в которыйх нет буквы "i"

C:\> dir | sort | find /v "i" > myfile.txt

Примечание:

комманды sort и find рассмотрены ниже

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

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

4. Стандартные внешние команды фильтры

4.1 find

Внешняя команда поиска указанных данных find имеет формат:

find [/C][/N][/V] 'text' [[path] filename][]

* 'text' образец строки символов, по которому ведется поиск;

* /C - вывод количества обнаружений образца "text" без содержимого строк на экран:

* /N - вывод строк с образцом "text" с указанием номера строк в файле:

* /V - исключающий поиск, т.е. вывод сток, не содержащих образец "text".

Команда может применяться только для текстовых файлов

Например, если необходимо отыскать в текстовом файле example.txt строки "FILENAME", содержащие сообщение достаточно записать:

c:\>find "FILENAME" example.txt

Фильтр может быть установлен в конвейере.

Например:

для поиска в корневом каталоге диска c: файлов, в имени которых есть образец "DISK"

c:\> dir c:\ | find "DISK"

4.2 Команда more

Некоторые команды DOS предусматривают возможность "постраничного " вывода на экран, например просмотр каталогов dir /p. Для предоставления этих возможностей, по желанию пользователя другим командам можно воспользоваться внешней командой more.

Пример:

постраничного вывод текстового файла myfile.txt

C:\>type myfile.txt | more

При использовании этой команды по заполнении экрана на нижней строке выводится сообщение -----MORE------

после чего для продолжения вывода достаточно нажатия на любую клавишу. Этот результат можно достигнуть, если записать команду в виде:

C:\>more < myfile.txt

Допускается использование этой команды совместно с фильтром find.

Например:

просматривается файл diplist.txt и выводит строки, имеющие образец "FILE",

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

клавишу

C:\>find "FILE" diplist.txt | more

4.3 Команда sort

При необходимости сортировки в текстовых файлах по алфавиту или числам в любой колонке текстовых строк можно воспользоваться внешней командой SORT.

Формат команды:

sort [/R] [+n]

где

* /R - реверсивная сортировка;

* +n - указание номера колонки в строке, с которой начинается сортировка

Например:

есть файл old.txt, который необходимо отсортировать по возрастанию, по алфавиту и записать под именем new.txt, то можно записать команду

C:\>sort < old.txt > new.txt

Команда сортировки может использоваться в конвейере.

Например:

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

C:\>dir | sort

3. Переменные среды окружения(команда set)

Выводит на экран, устанавливает или отменяет переменные операционной среды DOS, которые используются для управления поведением некоторых командных файлов и программ, а также управляют работой DOS. Команда SET часто используется в файлах AUTOEXEC.BAT или CONFIG.SYS для установки переменных при каждом запуске DOS.

set [переменная=[строка]]

Параметр "переменная" задает устанавливаемую или модифицируемую переменную среды, "строка" задает связываемую с конкретной переменной строку.

Для вывода текущих установок переменной используется команда set без параметров.

Установки переменных среды обычно включают в себя спецификацию переменных COMSPEC и PATH, которые DOS применяет для поиска программ на дисках. Часто используется также переменная PROMPT(описание запроса командной строки).

Когда в команде set задается значение переменной и строки, DOS добавляет заданное значение к операционной среде и связывает строку с данной переменной. Если переменная уже существует, то новое значение строки заменяет старое. Если вы задаете только переменную и знак равенства (без строки), DOS сбрасывает связанное с переменной значение строки.

Команда set часто задается в командных файлах, при этом переменные можно использовать таким же образом, как нумерованные переменные с %0 по %9, то есть задавать их в качестве ввода команды set. Например, чтобы добавить маршрут к переменной PATH, можно задать в командном файле команду set path=%1;%path%. При вызове переменной из командного файла значение нужно заключить в символы %.

Например, чтобы установить переменную среды INCLUDE в значение D:\SYS, наберите команду set include=d:\sys. После этого вы можете использовать строку D:\SYS в командном файле, заключив имя INCLUDE в %, например, включить в него для вывода содержимого связанного с INCLUDE каталога команду dir %include%. При обработке этой команды DOS заменяет %INCLUDE% строкой D:\SYS.

Иногда после выполнения команды set DOS может выводить сообщение:

Out of environment space

Это означает нехватку доступного пространства операционной среды (из-за этого в нее нельзя включить новую переменную). (см. описание команды command)

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

Пакетными или командными файлами (batch) называются файлы, содержимым которых являются команды DOS (внешние и внутренние). Пакетные файлы используются в том случае, когда надо создать стандартную операционную среду с помощью набора (а не одной) команд DOS. Одним из примеров является файл AUTOEXEC.BAT, осуществляющий начальную установку операционной среды. Существуют и другие ситуации, для которых применение пакетных файлов высокоэффективно. К ним относится, например, подготовка виртуального диска перед загрузкой интегрированного пакета (перезапись на него библиотек, ряда дополнительных модулей, оверлейных файлов и т.д.), а также создание исполняемых модулей из программ языков высокого уровня при отсутствии интегрированного пакета языка (или невозможности его использования).

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

Важным свойством командных файлов является возможность использовать внутри них формальные параметры. При этом обращение к командному файлу приобретает вид:

C:\> имя_командного_файла параметр1 [параметр2, ...]

Параметры, значения которых будут заданы при обращении к командному файлу, внутри файла будут иметь обозначения %1, %2, . . . , %N ( где N<10 ).

5.1 Команда echo

Команда echo позволяет управлять потоком вывода на дисплей:

echo off блокирует выдачу на экран приглашений DOS и текстов команд.

Примечение:

если в пакетнов файле перед командой поставить символ "@" то вывод

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

echo on отменяет действие echo off.

echo позволяет вывести текст при заблокированной выдаче.

Эта команда так же часто используется в сочетании с перенаправлением ввода-вывода

Пример:

посылает символ прогона на принтер

C:\> echo ^L > prn

Пример:

отвечает "y" на вопрос "Are you sure?"

C:\> echo y | del *.*

5.2 Команда rem

Команда rem позволяет внести комментарий в текст командного файла. Строка после rem не анализируется командным процессором.

Пример:

в командный файл внесена информация о лабораторной работе

rem Лабораторная работа N3

rem Выполнил ст. Комар М.А.

rem Номер зачетки ИА61-09

rem гр. ИА-61

5.3 Команда pause

Команда pause приостанавливает дальнейшую обработку пакетного файла до нажатия пользователем любой клавиши. При этом на экране появляется сообщение "Strike any key when ready".

5.4 Команда goto

Команда goto позволяет передавать управление на метку и может использоваться самостоятельно либо совместно с оператором проверки условия IF. Метка в пакетных файлах занимает отдельную строку и отличается тем, что ее первый символ - двоеточие (:).

Пример:

:infloop

echo это будет выводится до нажатия ctrl-c

goto infloop

5.5 Команда if

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

if [not] errorlevel число команда

Параметр not определяет, что DOS должна выполнять команду только в случае ложного значения условия. "errorlevel число" определяет истинное условие только если предыдущая выполняемая command.com программа возвращает код выхода, больший или равный заданному числу(см. так же команду choice).

Пример:

if not errorlevel 1 goto A

...

:A

...

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

if [not] строка1==строка2 команда

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

Пример:

if .%1. == .-h. goto help

rem здесь обрабатывается случай когда первый параметр не равен -h

goto end

:help

rem выводит помошь по пакетному файлу

echo Usage: %0 [-h] filename

:end

if [not] exist имя_файла команда

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

5.6 Команда for

Команда for обеспечивает циклическое выполнение команд DOS. При этом можно задавать формальный параметр и список фактических параметров ( обычно – имен файлов ), которые последовательно подставляются в текст исполняемой команды вместо формального параметра. Формат команды:

for формальный_параметр in (список_фактических_параметров) do команда_DOS

Например:

вызывает копирование на диск d: трех файлов с именем prog и расширениями pas, obj, exe.

for %a in (pas obj exe) do copy prog.%a d:

5.7 Команда shift

Команда shift вызывает сдвиг формальных параметров относительно списка фактических. Так, после него первым (%1) формальным параметром становится фактический второй и т.д. Команда shift может применяться для последовательной обработки заранее не определенного количества параметров либо для обработки более 9 фактических параметров ( т.к. максимальный номер формального параметра %9).

Пример:

Вывод всех параметров в каждой строке последовательно

:loop

if .%1. == .. goto end

echo %1

shift

goto loop

:end

Пример:

Вывод всех параметров в одной строке. Параметры накапливаются в переменной окружения PARAM.

set PARAM=

:loop

if .%1. == .. goto end

set PARAM=%PARAM% %1

shift

goto loop

:end

echo %PARAM%

5.8 Команда command

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

Так, команда

command /c v

вызовет обработку командного файла V.BAT, которая будет продолжаться до тех пор, пока в нем не закончатся операторы или не встретится оператор возврата EXIT. По этому оператору продолжится обработка вызывающего командного файла.

Параметр /E:nnnnn задает размер операционной среды окружения, где nnnnn – это размер в байтах. Значение nnnn должно лежать в диапазоне от 160 до 32768. DOS округляет значение до 16 байт. По умолчанию оно равно 256.

5.9 Команда 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 возвращает значение, соответствующее выбору пользователя.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]