ТОП 10:

Кафедра автоматизации обработки информации (АОИ)



Кафедра автоматизации обработки информации (АОИ)



  Утверждаю: Зав. каф АОИ, профессор ___________ Ю.П. Ехлаков «____» ______________2006г.


Методические указания

к выполнению лабораторных работ по дисциплинам


«Операционные системы»

для студентов специальности 230102,

 

«Операционные среды, системы и оболочки»

для студентов специальности 080700

 

    Разработчик: доцент каф. АОИ __________ Ю.Б. Гриценко «____» ______________ 2006г.

 

Томск – 2006


Содержание

 

1 Семестр. 4

ЛАБОРАТОРНАЯ РАБОТА №1 «Файлы пакетной обработки» 4

1.1. Цель работы.. 4

1.2. Язык командных файлов. 4

1.3. Некоторые команды DOS (Windows) 8

1.4. Варианты заданий на выполнение. 23

ЛАБОРАТОРНАЯ РАБОТА №2 «Программирование на языке SHELL в ОС Unix» 27

2.1. Цель работы.. 27

2.2. Программирование в языке Shell 27

2.3. Список команд Shell 42

2.4. Варианты заданий на выполнение. 45

ЛАБОРАТОРНАЯ РАБОТА №3 «Исследование структур основной памяти – conventional memory» 48

3.1. Цель работы.. 48

3.2. Организация хранения байтов в памяти. 48

3.3. Информация о структурах памяти. 48

3.4. Задание на выполнение. 51

ЛАБОРАТОРНАЯ РАБОТА №4 «Изучение файловой системы FAT» 52

4.1. Цель работы.. 52

4.2. Логическая структура дисков. 52

4.3. Задание на выполнение. 58

 

2 Семестр. 60

ЛАБОРАТОРНАЯ РАБОТА №1 «Разработка и компиляция С-програмы в среде UNIX» 60

1.1. Цель работы.. 60

1.2. Средства разработки программ.. 60

1.3. Создание процессов. 65

1.4. Задание на выполнение. 65

ЛАБОРАТОРНАЯ РАБОТА №2 «Разработка программы моделирующей различные механизмы планирования заданий». 67

2.1. Цель работы.. 67

2.2. Диспетчеризация потоков. 67

2.3. Задание на выполнение. 70

ЛАБОРАТОРНАЯ РАБОТА №3 «Изучение основ программирования на языке Ассемблер» 71

3.1. Цель работы.. 71

3.2. Структура программы на ассемблере. 71

3.3. Компиляция программ на ассемблере. 82

3.4. Функции прерываний ввода/вывода. 83

3.5. Арифметические команды.. 83

3.6. Логические команды.. 91

3.7. Команды сдвига. 91

3.8. Процедуры на языке ассемблера. 93

3.9. Передача аргументов через регистры.. 94

3.10. Возврат результата из процедуры.. 96

3.11. Макросредства языка ассемблера. 97

3.12. Задание на выполнение. 99

СПИСОК ЛИТЕРАТУРЫ... 107


1 Семестр

ЛАБОРАТОРНАЯ РАБОТА №1 «Файлы пакетной обработки»

 

Цель работы

 

Целью данной работы является:

- изучение назначения и основных возможностей командных файлов (Файлов пакетной обработки) операционных систем, построенных на платформе Windows NT;

- знакомство со специальными командами, используемыми в командных файлах;

- исследование стандартных потоков ввода-вывода и их перенаправление.

 

Язык командных файлов

 

Командный файл – это текстовый файл (в коде ASCII), состоящий из группы команд. Правила идентификации командных файлов совпадают с общими правилами идентификации файлов. Единственное исключение — командный файл всегда записывается на диск с расширением «.ВАТ» и/или «.CMD» (для операционных систем Windows на платформе NT).

Обратиться к командному файлу крайне просто. Набирается команда старта – имя файла, и нажимается клавиша Enter. После введения команды файл выбирается из рабочего каталога указанного или рабочего диска. Если в рабочем каталоге его нет, то поиск файла будет производиться в каталогах, описанных системной переменной %РАТН%. При нахождении файла первая из его команд загружается в память, отображается на экране и выполняется. Этот процесс повторяется последовательно для всех команд файла (от первой до последней команды).

Выполнение командного файла можно прервать в любой момент, нажав на клавиши Ctrl-Break (Ctrl-С).

 

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

В сеансе DOS клавиатура называется «CON» (CONsole) Для организации файла используется команда «COРY CON:». Наберите команду и имя создаваемого файла. Например, для создания файла «SAMРLE.BAT» введите:

 

C:\>COРY CON: SAMРLE.BAT

 

После этого введите составляющие файл команды. Набрав последнюю команду, одновременно нажмите клавиши Ctrl-Z (или функциональную клавишу F6) и клавишу Enter.

 

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

 

> приемник — перенаправить стандартный вывод в приемник (если файл-приемник существует, то он будет создан заново).

>> приемник — перенаправить стандартный вывод в приемник (если файл-приемник существует, то он будет сохранен, а информация будет записана в конец файла).

<источник — перенаправить стандартный ввод из источника.

передатчик| приемник — передает вывод одной команды на вход другой.

 

Замещаемые параметры. Внутри командного файла допускается использование замещаемых параметров. Параметр — это символьная переменная, расположенная в командной строке после имени команды. Он содержит дополнительную информацию, необходимую операционной системе при обработке команды. Параметром, например, может быть имя файла, к которому относится действие команды. Замещаемый параметр — это специальная переменная, которая в процессе выполнения команды подменяется обычным параметром (например, именем файла). В командном файле замещаемый параметр обозначается знаком процента % и цифрой от 0 до 9. Таким образом, командный файл может включать до десяти замещаемых параметров. Символьные переменные, предназначенные для подмены замещающего параметра, вводятся в командной строке при обращении к командному файлу — набирается команда старта (имя файла) и список параметров в порядке, соответствующем последовательности замещаемых параметров внутри файла.

Параметры заменяются в порядке следования символьных переменных в командной строке. Первая переменная подменяет параметр %1, вторая – параметр %2 и т.д. Вместо замещаемого параметра %0 автоматически подставляется спецификация (имя) командного файла.

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

Назовем наш командный файл «COРYALL.BAT». Введем в нем:

 

COРY %1 A:

 

При обращении к файлу набирается его имя и через пробел – имя копируемого файла (в нашем примере «SHOРLIST.DOC»). Введите команду:

 

C:\>COРYALL.BAT SHOРLIST.DOC

 

На экран выводится следующая команда:

 

C:\>COРY SHOРLIST.DOC A:

1 File(s) coрied

 

DOS автоматически подставила имя файла на место замещаемого параметра %1. Усложним пример. Организуем командный файл «DIFNUM.BAT», автоматически копирующий любой указанный файл и присваивающий копии любое указанное имя:

 

COРY %1 A:%2

 

Для обращения к этому файлу наберите его имя, имя копируемого файла, в нашем примере «NEW.DOC», и имя копии «OLD.DOC»:

 

C:\>DIFNUM NEW.DOC OLD.DOC

 

На экране появляется следующая команда файла «DIFNUM.BAT»:

 

C:\>COРY NEW.DOC A:OLD.DOC

1 File(s) coрied

 

Первое имя в командной строке «NEW.DOC» поставлено вместо замещаемого параметра %1. Второе имя «OLD.DOC» – вместо замещаемого параметра %2.

 

Замещаемые параметры и замещаемые символы. Параметр в командной строке команды старта командного файла может включать замещаемые символы «?» и «*». Если замещаемый символ вводится для обозначения группы параметров, то команда выполняется по количеству параметров в группе (т.е. один раз для каждого параметра). Рассмотрим командный файл:

 

COPY %1 CON:

 

Этот файл копирует на экран (CON) файл, описанный замещаемым параметром %1 (DISPLAY.BAT). Имя копируемого файла указывается в командной строке при обращении к командному файлу. Если указанный файл найден, его содержимое выводится на экран.

Этот файл копирует на экран (con) файл, описанный замещаемым параметром %1. Имя копируемого файла указывается в командной строке при обращении к командному файлу. Если указанный файл найден, его содержимое выводится на экран. Итак, командный файл «DISPLAY.BAT» записан на диск. Введем команду:

 

C:\>DISPLAY *.TXT

 

Все файлы рабочего диска с соответствующей спецификацией будут выведены на экран. Если имя копируемого файла включает обозначение процента, то при введении его в командную строку знак процента набирается два раза подряд. Например, имя «HIHO%.TXT» в командной строке должно быть представлено как «HIHO%%.TXT».

 

 

HELP

Вот ее возможный результат:

 

Для получения сведений об определенной команде наберите HELP <имя команды>

ASSOC — Вывод либо изменение сопоставлений по расширениям имен файлов.

AT — Выполнение команд и запуск программ по расписанию.

ATTRIB — Отображение и изменение атрибутов файлов.

BREAK — Включение/выключение режима обработки комбинации клавиш CTRL+C.

CACLS — Отображение/редактирование списков управления доступом (ACL) к файлам.

CALL — Вызов одного пакетного файла из другого.

CD — Вывод имени либо смена текущей папки.

CHCP — Вывод либо установка активной кодовой страницы.

CHDIR — Вывод имени либо смена текущей папки.

CHKDSK — Проверка диска и вывод статистики.

CHKNTFS— Отображение или изменение выполнения проверки диска во время загрузки.

CLS — Очистка экрана.

CMD — Запуск еще одного интерпретатора командных строк Windows.

COLOR — Установка цвета текста и фона, используемых по умолчанию.

COMP — Сравнение содержимого двух файлов или двух наборов файлов.

COMPACT— Отображение/изменение сжатия файлов в разделах NTFS.

CONVERT— Преобразование дисковых томов FAT в NTFS. Нельзя выполнить преобразование текущего активного диска.

COPY — Копирование одного или нескольких файлов в другое место.

DATE — Вывод либо установка текущей даты.

DEL — Удаление одного или нескольких файлов.

DIR — Вывод списка файлов и подпапок из указанной папки.

DISKCOMP— Сравнение содержимого двух гибких дисков.

DISKCOPY—Копирование содержимого одного гибкого диска на другой.

DOSKEY — Редактирование и повторный вызов командных строк; создание макросов.

ECHO — Вывод сообщений и переключение режима отображения команд на экране.

ENDLOCAL— Конец локальных изменений среды для пакетного файла.

ERASE — Удаление одного или нескольких файлов.

EXIT — Завершение работы программы CMD.EXE (интерпретатора командных строк).

FC — Сравнение двух файлов или двух наборов файлов и вывод различий между ними.

FIND — Поиск текстовой строки в одном или нескольких файлах.

FINDSTR — Поиск строк в файлах.

FOR — Запуск указанной команды для каждого из файлов в наборе.

FORMAT — Форматирование диска для работы с Windows.

FTYPE — Вывод либо изменение типов файлов, используемых при сопоставлении по расширениям имен файлов.

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

GRAFTABL— Позволяет Windows отображать расширенный набор символов в графическом режиме.

HELP — Выводит справочную информацию о командах Windows.

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

LABEL — Создание, изменение и удаление меток тома для дисков.

MD — Создание папки.

MKDIR — Создание папки.

MODE — Конфигурирование системных устройств.

MORE — Последовательный вывод данных по частям размером в один экран.

MOVE — Перемещение одного или нескольких файлов из одной папки в другую.

PATH — Вывод либо установка пути поиска исполняемых файлов.

PAUSE — Приостановка выполнения пакетного файла и вывод сообщения.

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

PRINT — Вывод на печать содержимого текстовых файлов.

PROMPT — Изменение приглашения в командной строке Windows.

PUSHD — Сохранение значения текущей активной папки и переход к другой папке.

RD — Удаление папки.

RECOVER — Восстановление читаемой информации с плохого или поврежденного диска.

REM — Помещение комментариев в пакетные файлы и файл CONFIG.SYS.

REN — Переименование файлов и папок.

RENAME — Переименование файлов и папок.

REPLACE— Замещение файлов.

RMDIR — Удаление папки.

SET — Вывод, установка и удаление переменных среды Windows.

SETLOCAL— Начало локальных изменений среды для пакетного файла.

SHIFT — Изменение содержимого (сдвиг) подставляемых параметров для пакетного файла.

SORT — Сортировка ввода.

START — Запуск программы или команды в отдельном окне.

SUBST — Сопоставляет заданному пути имя диска.

TIME — Вывод и установка системного времени.

TITLE — Назначение заголовка окна для текущего сеанса интерпретатора командных строк CMD.EXE.

TREE — Графическое отображение структуры папок заданного диска или заданной папки.

TYPE — Вывод на экран содержимого текстовых файлов.

VER — Вывод сведений о версии Windows.

VERIFY — Установка режима проверки правильности записи файлов на диск.

VOL — Вывод метки и серийного номера тома для диска.

XCOPY — Копирование файлов и дерева папок.

 

Чтобы получить информацию о какой-либо команде операционной системы можно также в командной строке набрать имя команды и через пробел указать знак /?. Например,

 

C:\>PAUSE /?

 

Далее приводится основной синтаксис некоторых команд, необходимых для выполнения лабораторной работы.

ECHO

 

ECHO [ON | OFF] — переключение режима отображения команд на экране.

ECHO [сообщение] — вывод сообщений.

 

Введите ECHO без параметра для определения текущего значения этой команды.

Введите ECHO. (с точкой) для получение пустой строки.

 

 

@ — знак экранирования. Отключает вывод на экран текущей строки.

 

 

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

 

GOTO метка

 

метка — строка пакетного файла, оформленная как метка.

 

Метка должна находиться в отдельной строке и начинаться с двоеточия.

 

IF— оператор условного выполнения команд в пакетном файле.

 

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

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

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

 

NOT — обращает истинность условия: истинное условие становится ложным, а ложное — истинным.

 

ERRORLEVEL число — условие является истинным, если код возврата последней выполненной программы не меньше указанного числа.

 

строка1==строка2 — это условие является истинным, если указанные строки совпадают.

IF (%1)==() — проверка на пустой параметр.

 

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

команда — задает команду, выполняемую при истинности условия. За этой командой может следовать ключевое слово ELSE, служащее для указания команды, которая должна выполняться в том случае, если условие ложно.

 

Предложение ELSE должно располагаться в той же строке, что и команда, следующая за ключевым словом IF. Например:

 

IF EXIST имя_файла. (

del имя_файла.

) ELSE (

echo имя_файла. missing.

)

 

Следующий пример содержит ОШИБКУ, поскольку команда del должна заканчиваться переходом на новую строку:

 

IF EXIST имя_файла. del имя_файла. ELSE echo имя_файла. missing

 

Следующий пример также содержит ОШИБКУ, поскольку команда ELSE должна располагаться в той же строке, что и команда, следующая за IF:

 

IF EXIST имя_файла. del имя_файла.

ELSE echo имя_файла. missing

 

Вот правильный пример, где все команды расположены в одной строке:

 

IF EXIST имя_файла. (del имя_файла.) ELSE echo имя_файла. missing

 

PAUSE — приостановка выполнения пакетного файла и вывод сообщения:

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

 

DIR — вывод списка файлов и подкаталогов из указанного каталога.

 

DIR [диск:][путь][имя_файла] [/A[[:]атрибуты]] [/B] [/C] [/D] [/L] [/N] [/O[[:]порядок]] [/P] [/Q] [/S] [/T[[:]время]] [/W] [/X] [/4]

 

[диск:][путь][имя_файла]

Диск, каталог и/или файлы, которые следует включить в список.

 

/A Вывод файлов с указанными атрибутами.

атрибуты:

- D Каталоги

- R Доступные только для чтения

- H Скрытые файлы

- A Файлы для архивирования

- S Системные файлы

- Префикс «-» имеет значение НЕ

/B Вывод только имен файлов.

/C Применение разделителя групп разрядов для вывода размеров файлов (по умолчанию). Для отключения этого режима служит ключ /-C.

/D Вывод списка в несколько столбцов с сортировкой по столбцам.

/L Использование нижнего регистра для имен файлов.

/N Отображение имен файлов в крайнем правом столбце.

/O Сортировка списка отображаемых файлов.

порядок:

- N По имени (алфавитная)

- S По размеру (сперва меньшие)

- E По расширению (алфавитная)

- D По дате (сперва более старые)

- G Начать список с каталогов

- Префикс «-» обращает порядок

 

/P Пауза после заполнения каждого экрана.

/Q Вывод сведений о владельце файла.

/S Вывод списка файлов из указанного каталога и его подкаталогов.

/T Выбор поля времени для отображения и сортировки

время:

- C Создание

- A Последнее использование

- W Последнее изменение

/W Вывод списка в несколько столбцов.

/X Отображение коротких имен для файлов, чьи имена не соответствуют стандарту 8.3. Формат аналогичен выводу с ключом /N, но короткие имена файлов выводятся слева от длинных. Если короткого имени у файла нет, вместо него выводятся пробелы.

/4 Вывод номера года в четырехзначном формате

 

Стандартный набор ключей можно записать в переменную среды DIRCMD. Для отмены их действия введите в команде те же ключи с префиксом «-», например: /-W.

 

MD— создание каталога.

 

MKDIR [диск:]путь

MD [диск:]путь

 

CD — вывод имени либо смена текущего каталога.

 

CHDIR [/D] [диск:][путь]

CHDIR [..]

CD [/D] [диск:][путь]

CD [..]

 

.. обозначает переход в родительский каталог.

 

Команда CD диск: отображает имя текущего каталога указанного диска.

Команда CD без параметров отображает имена текущих диска и каталога.

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

 

RD — удаление каталога.

 

RMDIR [/S] [/Q] [диск:]путь

RD [/S] [/Q] [диск:]путь

 

/S Удаление дерева каталогов, т. е. не только указанного каталога, но и всех содержащихся в нем файлов и подкаталогов.

/Q Отключение запроса подтверждения при удалении дерева каталогов с помощью ключа /S.

 

COPY — копирование одного или нескольких файлов в другое место.

 

COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B] источник [/A | /B]

[+ источник [/A | /B] [+ ...]] [результат [/A | /B]]

 

источник Имена одного или нескольких копируемых файлов.

/A Файл является текстовым файлом ASCII.

/B Файл является двоичным файлом.

/D Указывает на возможность создания зашифрованного файла результат Каталог и/или имя для конечных файлов.

/V Проверка правильности копирования файлов.

/N Использование, если возможно, коротких имен при копировании файлов, чьи имена не удовлетворяют стандарту 8.3.

/Y Подавление запроса подтверждения на перезапись существующего конечного файла.

/-Y Обязательный запрос подтверждения на перезапись существующего конечного файла.

/Z Копирование сетевых файлов с возобновлением.

 

Ключ /Y можно установить через переменную среды COPYCMD.

Ключ /-Y командной строки переопределяет такую установку.

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

 

Чтобы объединить файлы, укажите один конечный и несколько исходных файлов, используя подстановочные знаки или формат «файл1+файл2+файл3+...».

 

REN — переименование одного или нескольких файлов.

 

RENAME [диск:][путь]имя_файла1 имя_файла2.

REN [диск:][путь]имя_файла1 имя_файла2.

 

Для конечного файла нельзя указать другой диск или каталог.

 

DEL — удаление одного или нескольких файлов.

 

DEL [/P] [/F] [/S] [/Q] [/A[[:]атрибуты]] имена

ERASE [/P] [/F] [/S] [/Q] [/A[[:]атрибуты]] имена

 

имена — Имена одного или нескольких файлов. Для удаления сразу нескольких файлов используются подстановочные знаки. Если указан каталог, из него будут удалены все файлы.

 

/P Запрос на подтверждение перед удалением каждого файла.

/F Принудительное удаление файлов, доступных только для чтения.

/S Удаление указанных файлов из всех подкаталогов.

/Q Отключение запроса на подтверждение при удалении файлов.

/A Отбор файлов для удаления по атрибутам.

атрибуты:

- S Системные файлы

- R Доступные только для чтения

- H Скрытые файлы

- A Файлы для архивирования

- Префикс «-» имеет значение НЕ

 

TYPE — вывод содержимого одного или нескольких текстовых файлов.

 

TYPE [диск:][путь]имя_файла

 

 

FOR—выполнение указанной команды для каждого файла набора.

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

 

%переменная – подставляемый параметр;

(набор) – набор, состоящий из одного или нескольких файлов. Допускается использование подстановочных знаков;

команда – команда, которую следует выполнить для каждого файла;

параметры – параметры и ключи для указанной команды.

 

В пакетных файлах для команды FOR используется запись %%переменная вместо %переменная. Имена переменных учитывают регистр букв (%i отличается от %I).

 

Добавление поддерживаемых вариантов команды FOR при включении расширенной обработки команд:

 

FOR /D %переменная IN (набор) DO команда [параметры]

 

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

 

FOR /R [[диск:]путь] %переменная IN (набор) DO команда [параметры]

 

Выполнение команды для каталога [диск:]путь, а также для всех подкаталогов этого пути. Если после ключа /R не указано имя каталога, выполнение команды начинается с текущего каталога.

Если вместо набора указана только точка (.), команда выводит список всех подкаталогов.

 

FOR /L %переменная IN (начало,шаг,конец) DO команда [параметры]

 

Набор раскрывается в последовательность чисел с заданными началом, концом и шагом приращения. Так, набор (1,1,5) раскрывается в (1 2 3 4 5), а набор (5,-1,1) заменяется на (5 4 3 2 1)

 

FOR /F [«ключи»] %переменная IN (набор) DO команда [параметры]

FOR /F [«options»] %variable IN («literal string») DO command [command-parameters]

FOR /F [«options»] %variable IN ('command') DO command [command-parameters]

 

или, если использован параметр usebackq:

 

FOR /F [«options»] %variable IN (filenameset) DO command [command-parameters]

FOR /F [«options»] %variable IN ('literal string') DO command [command-parameters]

FOR /F [«options»] %variable IN (`command`) DO command [command-parameters]

 

Набор содержит имена одного или нескольких файлов, которые по очереди открываются, читаются и обрабатываются. Обработка состоит в чтении файла, разбивки его на отдельные строки текста и выделения из каждой строки заданного числа подстрок (в том числе нуля). Затем найденная подстрока используется в качестве значения переменной при выполнении основного тела цикла. По умолчанию ключ /F выделяет из каждой строки файла первое слово, очищенное от окружающих его пробелов. Пустые строки в файле пропускаются. Необязательные параметры «ключи» служит для переопределения заданных по умолчанию правил обработки строк. Ключи представляют собой заключенную в кавычки строку, содержащую указанные параметры. Ключевые слова:

 

eol=c — определение символа комментариев в конце строки (допускается задание только одного символа);

skip=n — число пропускаемых при обработке строк в начале файла;

delims=xxx — определение набора разделителей для замены заданных по умолчанию пробела и знака табуляции;

tokens=x,y,m-n — определение номеров подстрок, выделяемых из каждой строки файла и передаваемых для выполнения в тело цикла. При использовании этого ключа создаются дополнительные переменные. Формат m-n представляет собой диапазон подстрок с номерами от m по n. Если последний символ в строке tokens= является звездочкой, создается дополнительная переменная, значением которой будет весь оставшийся текст в строке после обработки последней подстроки;

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

 

Поясняющий пример:

 

FOR /F “eol=; tokens=2,3* delims=,” %%i in (myfile.txt) do @echo %%i %%j %%k

— эта команда обрабатывает файл myfile.txt, пропускает все строки, которые начинаются с символа точки с запятой, и передает вторую и третью подстроки из каждой строки в тело цикла, причем подстроки разделяются запятыми и/или пробелами. В теле цикла переменная %i используется для второй подстроки, %j – для третьей, а %k получает все оставшиеся подстроки после третьей.

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

Для того чтобы использовать двойные кавычки, необходимо использовать параметр usebackq, иначе двойные кавычки будут восприняты как границы строки для обработки.

Переменная %i явно описана в инструкции for, а переменные %j и %k описываются неявно с помощью ключа tokens=. Ключ tokens= позволяет извлечь из одной строки файла до 26 подстрок, при этом, не допускается использование переменных больших чем буквы 'z' или 'Z'. Следует помнить, что имена переменных FOR являются глобальными, поэтому одновременно не может быть активно более 52 переменных.

Синтаксис команды FOR /F также позволяет обработать отдельную строку, с указанием параметра filenameset, заключенным в одиночные кавычки.

Строка будет обработана как единая строка из входного файла.

Наконец, команда FOR /F позволяет обработать строку вывода другой команды.

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

FOR /F “usebackq delims==“ %%i IN (`set`) DO @echo %%i

— выведет перечень имен всех переменных среды, определенных в настоящее время в системе.

 

SHIFT— изменение содержимого (сдвиг) подставляемых параметров для пакетного файла.

 

SHIFT [/n] — команда SHIFT при включении расширенной обработки команд поддерживает ключ /n, задающий начало сдвига параметров с номера n, где n может быть от 0 до 9.

 

Например, в следующей команде:

 

SHIFT /2

 

%3 заменяется на %2, %4 на %3 и т.д., а %0 и %1 остаются без изменений.

 

CALL — вызов одного пакетного файла из другого.

 

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

 

параметры – набор параметров командной строки, необходимых пакетному файлу.

 

CHOICE[2] — ожидает ответа пользователя.

 

CHOICE [/C[:]варианты] [/N] [/S] [/T[:]c,nn] [текст]

 

/C[:]варианты — варианты ответа пользователя.

По умолчанию строка включает два варианта: YN

/N Ни сами варианты, ни знак вопроса в строке приглашения не отображаются.

/S Учитывать регистр символов.

/T[:]c,nn Ответ «c» выбирается автоматически после nn секунд ожидания текст Строка приглашения

После выполнения команды переменная ERRORLEVEL приобретает значение, равное номеру выбранного варианта ответа.

 

FC — сравнение двух файлов или двух наборов файлов и вывод различий между ними.

 

FC [/A] [/C] [/L] [/LBn] [/N] [/OFF[LINE]] [/T] [/U] [/W]

[/nnnn][диск1:][путь1]имя_файла1 [диск2:][путь2]имя_файла2

FC /B [диск1:][путь1]имя_файла1 [диск2:][путь2]имя_файла2

 

/A Вывод только первой и последней строк для каждой группы различий.

/B Сравнение двоичных файлов.

/C Сравнение без учета регистра символов.

/L Сравнение файлов в формате ASCII.

/LBn Максимальное число несоответствий для заданного числа строк.

/N Вывод номеров строк при сравнении текстовых файлов ASCII.

/OFF[LINE] Не пропускать файлы с установленным атрибутом «Автономный».

/T Символы табуляции не заменяются эквивалентным числом пробелов.

/U Сравнение файлов в формате UNICODE.

/W Пропуск пробелов и символов табуляции при сравнении.

/nnnn Число последовательных совпадающих строк, которое должно встретиться после группы несовпадающих.

[диск1:][путь1]имя_файла1

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

[диск2:][путь2]имя_файла2

Указывает второй файл или набор файлов для сравнения.

 

FIND — поиск текстовой строки в одном или нескольких файлах.

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] «строка» [[диск:][путь]имя_файла[ ...]]

 

/V Вывод всех строк, НЕ содержащих заданную строку.

/C Вывод только общего числа строк, содержащих заданную строку.

/N Вывод номеров отображаемых строк.

/OFF[LINE] Не пропускать файлы с установленным атрибутом «Автономный».

/I Поиск без учета регистра символов.

«строка» Искомая строка.

[диск:][путь]имя_файла

Один или несколько файлов, в которых выполняется поиск.

Если путь не задан, поиск выполняется в тексте, введенном с клавиатуры либо переданном по конвейеру другой командой.

 

SORT — осуществляет сортировку файла.

 

SORT [/R] [/+n] [/M килобайтов] [/L язык] [/REC символов]

 

[[диск1:][путь1]имя_файла1] [/T [диск2:][путь2]]

 

[/O [диск3:][путь3]имя_файла3]

 

/+n Задает число символов, n, до начала каждого сравнения. /+3 показывает, что каждое сравнение будет начинаться с третьего символа каждой строки. Строки меньше чем n символов собираются перед всеми остальными строками.

По умолчанию, сравнение начинается с первого символа каждой строки.

/L[OCALE] язык Перекрывает установленные в системе по умолчанию язык и раскладку заданными. Пока существует возможность только одного выбора: ««C»« – наиболее быстрый способ упорядочивания последовательности.

Сортировка всегда идет без учета регистра.

/M[EMORY] килобайтов Задает количество основной памяти, используемой для сортировки, в килобайтах. Размер памяти должен быть не менее 160КБ.

/REC[ORD_MAXIMUM] символов Определяет максимальное число символов в записи (по умолчанию 4096, максимальное 65535).

/R[EVERSE] Обратный порядок сортировки; т.е. сортировка идет от Я до А, и затем от 9 до 0.

[диск1:][путь1]имя_файла1 Определяет имя сортируемого файла. Если оно опущено, то будет использоваться стандартный поток ввода. Явное задание сортируемого файла работает быстрее, чем перенаправление того же файла в качестве стандартного потока ввода.

/T[EMPORARY] [диск2:][путь2] Определяет путь к папке, содержащей рабочие файлы сортировки, в том случае, когда данные не помещаются в основной памяти. По умолчанию используется системная временная папка.

/O[UTPUT] [диск3:][путь3]имя_файла3 Определяет имя файла, в котором сохраняются отсортированные результаты. Если оно опущено данные записываются в стандартный поток вывода. Явное задание файла вывода работает быстрее, чем перенаправление стандартного потока вывода в этот же файл.

 

Варианты заданий на выполнение

 

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

 

Вариант 1. Разработать командный файл создающий, копирующий или удаляющий файл, указанный в командной строке, в зависимости от выбранного ключа (замещаемого параметра) /n , /c , /d.

 

Вариант 2. Разработать командный файл создающий, копирующий или удаляющий каталог, указанный в командной строке, в зависимости от выбранного ключа (замещаемого параметра) /n , /c , /d.

 

Вариант 3. Разработать командный файл, добавляющий вводом с клавиатуры содержимое текстового файла (в начало или в конец в зависимости от ключей (замещаемого параметра) /b /e).

 

Вариант 4. Разработать командный файл, регистрирующий время своего запуска в файле протокола run.log и автоматически запускающий некоторую программу (например, антивирусную и т. п.) по пятницам или 13 числам.

 

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

 

Вариант 6. Разработать командный файл, который помещает список файлов текущего каталога в текстовый файл и в зависимости от ключа сортирует по какому-либо полю. Реализовать два варианта: с использованием только команды DIR, с использованием команд DIR и SORT.

 

Вариант 7. Разработать командный файл, который в интерактивном режиме мог бы дописывать в файл текст, удалять строки из файла, и распечатывать на экране содержимое файла.

 

Вариант 8. Разработать командный файл, который дописывал бы имя файла, полученного входным параметром в сам файл N количество раз. N – также задается параметром.

 

Вариант 9. Разработать командный файл, который бы запускал бы какой-либо файл один раз в сутки. То есть, если файл запускается первый раз в сутки, то он запускает какой-либо файл. Если ваш файл уже запускали сегодня, то ваш файл ничего не делает. В работе используйте для сравнения дат команду FC.

 

Вариант 10. Разработать командный файл, который бы запускал бы какой-либо файл один раз в сутки. То есть, если файл запускается первый раз в сутки, то он запускает какой-либо файл. Если ваш файл уже запускали сегодня, то ваш файл ничего не делает. Сравнение дат реализуйте через переменные, а не через файлы.

 

Вариант 11. Разработать командный файл, который получал в качестве параметра какое-либо имя, и проверял, определена ли токая переменная среды или нет, и выводил соответствующее сообщение.

 

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

 

Вариант 13. В некотором файле храниться список пользователей ПК и имя их домашних каталогов. Необходимо разработать программу, которая просматривает данный файл и в интерактивном режиме задает вопрос – копировать текущему пользователю (в его домашний каталог) какой-либо заданный файл (в качестве параметра) или нет. Если «Да» то программа копирует файл.

 

Вариант 14. Разработать командный файл, который бы выводил в зависимости от ключа на экран имя файла с самой последней или с самой ранней датой последнего использования.

 







Последнее изменение этой страницы: 2016-08-16; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 34.231.21.160 (0.125 с.)