- •«Команды и пакетные файлы в ос Windows»
- •Структура команды
- •Шаблоны имен файлов
- •Список команд и группировка
- •Перенаправление ввода/вывода
- •Конвейеры
- •Переменные среды
- •Некоторые команды консольного режима
- •Просмотр и изменение сопоставлений файлов
- •Вывод и изменение атрибутов файлов
- •Вывод имени либо смена текущего каталога
- •Очистка экрана
- •Запуск новой копии интерпретатора команд Windows
- •Установка цветов для текста и фона в текстовых окнах
- •Сравнение содержимого двух файлов или наборов файлов
- •Копирование одного или нескольких файлов в другое место или с другим именем
- •Вывод или изменение даты
- •Удаление одного или нескольких файлов
- •Вывод списка файлов и подкаталогов из указанного каталога
- •Завершение работы интерпретатора команд
- •Сравнение двух файлов или двух наборов файлов и вывод различий между ними
- •Поиск заданного текста в файлах
- •Просмотр и изменение командных строк, сопоставленных с типом файлов
- •Вывод справочных сведений о командах Windows
- •Создание, изменение и удаление меток тома для дисков
- •Создание каталога
- •Последовательный вывод данных по частям размером в один экран
- •Перемещение одного или нескольких файлов из одного каталога в другой, переименование файлов и папок
- •Вывод или задание пути поиска исполняемых файлов
- •Печать текстового файла
- •Изменение приглашения командной строки
- •Удаление каталога
- •Переименование одного или нескольких файлов.
- •Замена файлов
- •Вывод, задание, удаление и ввод переменных среды
- •Выключение или перезапуск компьютера
- •Сортировка строк стандартного ввода или файла
- •Запуск указанной программы или команды в отдельном окне
- •Сведения о конфигурации операционной системы
- •Завершение процесса по его идентификатору или имени образа
- •Отображение списка процессов
- •Вывод или изменение времени
- •Назначение и возможности пакетных файлов
- •Параметры пакетных файлов
- •Позиционные параметры
- •Модификаторы позиционных параметров
- •Переменные среды в пакетных файлах
- •Параметр errorleveLи переменная %errorlevel%
- •Команды для пакетных файлов
- •Вызов одного пакетного файла из другого
- •Вывод сообщений и переключение режима отображения команд на экране
- •Локализация изменений среды в пакетном файле
- •Циклическое выполнение указанной команды для набора значений
- •Передача управления строке пакетного файла
- •Оператор условного выполнения команд в пакетном файле
- •If условие (команда1
- •Порядок выполнения работы
- •Пример выполнения лабораторной работы
- •Примеры заданий на использование команд в диалоге
- •Список вариантов заданий на разработку пакетных файлов
- •Контрольные вопросы
Порядок выполнения работы
Лабораторная работа выполняется в лаборатории, оснащенной компьютерами с установленной ОС Windows. Студенты получают задание на написание пакетных файлов, изучают команды консольного режима по приведенному описанию, осваивают применение команд на практике, пишут и отлаживают пакетный файл, готовят отчет.
Отчет о лабораторной работе оформляется на бумаге в печатном или рукописном виде. На титульном листе указывается название работы и состав бригады. В отчете приводится формулировка задания, а также тексты разработанных пакетных файлов с необходимыми пояснениями.
Когда студенты готовы к сдаче работы, преподаватель дает им 2-3 задания на применение команд в диалоговом режиме, проверяет выполнение заданий, а затем проверяет отчет. При выполнении заданий разрешается пользоваться данным описанием, другой литературой или справочной системой Windows. Преподаватель может задать дополнительные вопросы, выясняя уровень освоения системы команд.
Не требуется заучивание наизусть всех описанных команд и тем более их ключей, более важно понимание основ консольного режима и умение быстро найти требуемую информацию в справочной системе.
Пример выполнения лабораторной работы
Задание. Написать и отладить пакетный файл, который получает в качестве параметров одно или несколько расширений имени файла и для каждого файла в текущем каталоге, имеющего одно из заданных расширений, выполняет одно из трех действий по выбору пользователя: удаляет файл, выдает его порциями на экран или пропускает без обработки. Если же в качестве первого параметра задан ключ/R, то эти действия выполняются для файлов текущего каталога и всех его подкаталогов.
Вызов пакетного файла может выглядеть, например, так:
laba2 /R txt bat c pas
Это означает: в текущем каталоге и всех его подкаталогах обработать согласно заданию все файлы с расширениями .txt,.bat,.cи.pas.
Решение. Для выполнения поставленного задания можно использовать приведенный ниже пакетный файлLaba2.bat.
@echo off
if /%1 == / goto :SyntaxError
if /%1 == //R set RECURS=YES
call :DoIt %*
goto :eof
:DoIt
rem Рекурсивная процедура обработки каталога
rem с подкаталогами
setlocal
cd
if /%1 == //R shift
:Loop
if /%1==/ goto :EndLoop
for %%i in (*.%1) do call :ProcessFile %%i
shift
goto :Loop
:EndLoop
if /%RECURS% neq /YES goto :StopDoIt
for /D %%k in (*) do (
pushd %%k
call :DoIt %*
popd
)
:StopDoIt
endlocal
goto :eof
:ProcessFile
rem Процедура обработки одного файла
:Loop2
set /P WHAT=Файл %1 (Удалить, Выдать, Пропустить):
if /%WHAT% == /У (
del %1
goto :eof
)
if /%WHAT% == /В (
type %1 | more
goto :eof
)
if /%WHAT% neq /П goto :Loop2
goto :eof
:SyntaxError
echo Usage: laba2 [/R] ext1 [ext2 ...]
Пояснения. Файл начинается с команды “@echo off”, отключающей отображение команд в ходе выполнения. Далее проверяется, заданы ли параметры команды. Если нет, то выдается подсказка и выполнение завершается. Затем проверяется, задан ли ключ обработки подкаталогов/R. Дополнительный символ “/”, добавленный слева к обоим сравниваемым значениям, позволяет избежать синтаксической ошибки в случае пустоты параметра: вместо некорректного выражения “if == ” будет обрабатываться корректное “if / == /”. Здесь конкретный символ “/” вовсе не обязателен, столь же правильно было бы написать, например,“if ы%1 == ы”.
Вся остальная работа выполняется в процедуре :DoIt. Пара командsetlocalв начале иendlocalв конце обеспечивают отдельный набор переменных для каждого вызова:DoIt. Командаcdсообщает пользователю, какой каталог будет обрабатываться. Цикл между метками:Loopи:EndLoopс помощью командыshiftперебирает все параметры командной строки, задающие обрабатываемые расширения, а цикл “for %%i” перебирает все файлы текущего каталога с данным расширением. Для каждого файла вызывается процедура:ProcessFile.
Если не задан ключ обработки подкаталогов, то работа :DoItна этом завершается. Если же ключ задан, то цикл “for /D %%k” перебирает все подкаталоги текущего каталога, переходит в каждый подкаталог (pushd) с последующим возвратом (popd) и в каждом подкаталоге рекурсивно вызывает:DoIt.
Процедура :ProcessFileзапрашивает у пользователя требуемое действие с файлом (У/В/П), запоминает ответ в переменнойWHATи выполняет нужное действие. При вводе непредусмотренной буквы запрос повторяется.