Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторная работа № 4
Программирование командных BAT-файлов, обработка аргументов, метки,
операторы перехода и ветвления, организация циклов
Цель: закрепить навыки работы с командной строкой; изучить структуру командного файла, команды, используемые в командных файлах; получить практический навык создания командных файлов.
Теоретические сведения
Пакетные командные файлы используются в операционных системах (ОС) для того, чтобы иметь возможность задавать последовательность команд ОС, управлять запуском задач, создавать разные варианты рабочей среды.
ПКФ в системе MS-DOS являются текстовыми файлами в коде ASCII, которые содержат последовательности команд ОС. Они должны иметь расширение .ВАТ и иметь имя не более восьми символов. При этом, в текущем каталоге не должно быть одноименных файлов с расширением .СОМ или .ЕХЕ.
В ОС MS-DOS специально для ПКФ предусмотрено восемь команд и специальный символ @ (Табл.1).
Данные команды являются внутренними командами ОС, размещаются в командном процессоре и доступны из любого каталога.
Таблица 1
Команда |
Назначение |
@ |
Не выводит на экран дисплея строку которая следует за ним. |
CALL |
Осуществляет выполнение одного пакета команд внутри другого пакета. |
CLS |
Очистка экрана. |
ECHO OFF |
Запрещает вывод на экран командных строк. |
ECHO ON |
Разрешает вывод на экран командных строк. |
ECHO <текст> |
Вывод на экран текстовой информации (при действии команды ECHO OFF). |
FOR |
Задание цикла. |
GOTO<метка> |
Передача управления на указанную метку. |
IF |
Условное выполнение команды. |
PAUSE |
Прерывает выполнение программы. |
REM |
Выводит текст на экран дисплея. |
SHIFT |
Сдвиг влево параметров команды. |
Для запуска ПКФ вводится его имя без расширения. В случае, если ПКФ находится не в текущем каталоге, путь доступа к ПКФ должен быть определен командой РАТН. Если в какой-либо команде пакета была допущена ошибка, то выполнение пакета прекращается и на экран выводится сообщение об ошибке.
Можно прервать выполнение пакета нажатием Ctrl-C. В этом случае выводится сообщение:
Terminate batch job (Y/N)?
(Завершить работу командного файла (Да/Нет)?
ПКФ можно сформировать с помощью любого текстового редактора или других программ позволяющих создавать файлы в коде ASCII.
Рассмотрим более подробно некоторые команды в ПКФ.
ECHO <текст сообщения> - вкл/выкл режима вывода команды перед её выполнением.
@ если этот символ поставлен в начало строки, то следующая за ним команда не выводится при включенном режиме вывода команды перед её выполнением (т.е. если ECHO ON).
После имени этой команды сообщается метка командной строки, в которую производится переход. Если перед строкой указано двоеточие, то это означает, что за ним следует метка, а не команда. Между двоеточием и именем пробел не ставится, между именем и командой GOTO оставляют пробел. Длина метки ограничивается 8 символами.
Например,
GOTO EXIT оператор безусловного
……………. перехода по метке
:EXIT
CHOICE [/С:список символов][/Т:символ,число секунд] сообщение
/С:список символов указывает допустимые символы, которые может ввести пользователь в ответ на сообщение. Если данный параметр не указан, допустимые символы Y и N.
/Т:символ,число секунд если этот параметр указан, то в случае, когда пользователь по истечении заданного времени не нажал ни на одну клавишу, принимается ответ символ.
Например: CHOICE /C:YN “Запустить программу ALFA? ” при ответе N значение переменной ERRORLEVEL устанавливается равным 2, а при ответе Y равным 1.
IF <условие> <действие> оператор условия.
Например:IF ERRORLEVEL 1 GOTO EXIT.
Переменная <условие> может иметь один из четырех форматов:
1. <набор_символов_1>==<набор_символов_2>.
Условие выполняется, если <набор_символов_1> и <набор_символов_2> являются идентичными после замещения параметров.
2. ERRORLEVEL <номер>.
Условие выполняется, если для последней команды, которую выполнила ОС код завершения равен или больше значения <номер>.
3. EXIST <имя_файла>.
Условие выполняется, если существует файл с указанным именем.
4. NOT <условие>.
Условие выполняется, если не выполняется заданное условие.
COMMAND /Y /C имя_командного_файла [параметры] выполнение командного файла в пошаговом режиме. Текст каждой команды будет выводиться перед выполнением на экран. Для выполнения команды надо нажать клавишу Y или Enter.
Выводит на экран сообщение: Strike a key when ready .... Если нужно вывести текст на русском языке, то перед командой PAUSE можно ввести ECHO с текстом "Нажмите любую клавишу".
И после нажатия клавиши дальше выполняется командный файл. В период паузы возможен выход из выполнения командного файла путём нажатия сочетания клавиш Ctrl+C или Ctrl+Break.
Формат команды прост: SHIFT. В ПКФ можно использовать до десятка параметров, с помощью данной команды это количество можно увеличить. Команда SHIFT присваивает новые значения параметрам %0 - %9. При этом параметру %0 присваивается старое значение %1 ,%1 - старое значение %2 и т.д. %9 присваивается значение, следующее за старым значением %9 в командной строке.
FOR %%N IN(группа) DO команда %%N,
где N - однобуквенная переменная, последовательно принимающая значения, входящие в параметр (группа);
(группа) - имя файла или имена файлов, вместе с именем файла могут указываться дисковод и возможный путь доступа; команда - команда ОС MS-DOS.
CALL [<дисковод:>][<путь_доступа>]<командный_файл> <параметры>,
где <дисковод:> - дисковод диск которого содержит командный файл;
<путь_доступа> - путь доступа к данному ПКФ;
<командный файл> - имя ПКФ без расширения.
Задание на лабораторную работу
В соответствии с номером по списку в журнале разработать пакетный bat-файл (см. таблицу2). В пакетных файлах предусмотреть сообщение имени, назначения, применения и автора пакетного файла (при пустой командной строке и по ключу /?), контроль верности командной строки, наличие требуемых файлов и сохранность имени пакетного файла. Текущий каталог не изменять, если это специально не оговорено. Там, где необходимо, имена файлов указывать с полным путем и диском. С клавиатуры при работе пакетного файла вводить только числа, строковые данные выбирать либо из меню, либо передавать в командной строке.
Таблица 2
№ |
Задание |
1 |
Разработать пакетный файл для обновления архива. Выбор архиватора осуществляется из меню. Имя архива передается в командной строке. |
2 |
Разработать пакетный файл для очистки подкаталога с подтверждением. |
3 |
Разработать пакетный файл для проверки дисков (каталогов) на вирусы. Диск выбирается из меню. Имя антивирусной программы - в командной строке (drwebw.exe). |
4 |
Разработать пакетный файл для выбора из меню на запуск одного из нескольких редакторов (notepad, ncedit и др.) для редактирования требуемого файла. Имя файла передается в командной строке. |
5 |
Разработать пакетный файл для архивации файлов в каталогах и подкаталогах (по отдельности в каждом каталоге) и удаления архивных файлов. Имена каталога и архиватора - в командной строке. |
6 |
Разработать пакетный файл для построения системы студенческих каталогов с запросом на создание каталогов требуемых курсов, групп и запросом максимального числа пользователей в группе. Номера курсов и шифры групп - в командной строке. |
7 |
Разработать пакетный файл для перехода студента в личный каталог. Группа выбирается из меню, курс передается в командной строке |
8 |
Разработать пакетный файл для установки даты и времени (параметры в командной строке) |
9 |
Разработать пакетный файл для очистки студенческих каталогов: удаления файлов *.BAK, *.TMP и др. Номера очищаемых курсов передаются в командной строке. |
10 |
Разработать пакетный файл для вывода (на экран, файл, принтер) списка файлов из каталогов студентов. Шифр группы - из командной строки, направление вывода - из меню. |
11 |
Разработать пакетный файл для перехода в каталог студента, если он существует и его архивирования |
12 |
Разработать пакетный файл для вывода текстового файла на экран по страницам. Имя файла передается в командной строке. |
13 |
Разработать пакетный файл для перезаписи файлов документов (*.doc, *.txt) из одного каталога в другой с обновлением |
14 |
Разработать пакетный файл для копирования всех файлов документов (*.doc, *.txt) из всех студенческих подкаталогов в директорию «Мои документы» |
15 |
Разработать пакетный файл для проверки наличия файлов документов (*.doc, *.txt) в данном подкаталоге (имя в параметрах). В случае положительного ответа вывести их список |
16 |
Разработать пакетный файл для резервного копирования файлов с определенными расширениями из разных каталогов с возможностью создания резервного каталога, если его нет в системе |
17 |
Разработать пакетный файл для поиска во временном каталоге системы файла, имя которого передается параметром, если файл найден, то выдать на экран его отличия от файла с таким же именем из текущего каталога; Если файлы текстовые, то выводятся различающиеся строки из этих файлов. Если файлы двоичные (или указан ключ двоичного сравнения) выводятся различающиеся байты. |
18 |
Разработать пакетный файл принимающий параметр с указанием имени файла, содержащего список фамилий студентов. Пользователь должен с клавиатуры вносить новые значения. Наименование файла соответствует названию группы студентов. Если такой файл существует, то выполняется его пополнение. Файл сохраняется в отсортированном в порядке возрастания виде. |
19 |
Разработать пакетный файл, копирующий в указанную папку указанные файлы, у которых не установлен атрибут «Архивный» и устанавливающий им атрибут «Архивный». |
20 |
Разработать пакетный файл, который из файлов заданных параметрами командного файла создает файл с заданным именем, в который поместить сначала содержимое файлов, в имени которых есть строка «fil», затем содержимое всех остальных файлов. |
21 |
Разработать пакетный файл, который выводит на экран, и сохранить в указанном файле полные названия папок (с путем) в названии которых встречается слово Debug. |
22 |
Разработать пакетный файл, который считает размер файлов заданного типа, хранящихся на диске в папках с заданным именем. |
23 |
Разработать пакетный файл, принимающий параметры с указанием фамилии студента, которого необходимо исключить из списка группы и наименования файла, содержащего этот список, а также выполняющий это действие. |
24 |
Разработать пакетный файл, принимающий параметры с указанием двух фамилий студентов, одну из которых следует заменить второй, и наименования файла, содержащего список, а также выполняющий это действие. |
25 |
Разработать пакетный файл, который для поддерева папок, начиная с указанной папки переименовывает подпапки с указанным именем, если они существуют, добавив к их имени расширение bak. |
Контрольные вопросы: