- •«Команды и пакетные файлы в ос Windows»
- •Структура команды
- •Шаблоны имен файлов
- •Список команд и группировка
- •Перенаправление ввода/вывода
- •Конвейеры
- •Переменные среды
- •Некоторые команды консольного режима
- •Просмотр и изменение сопоставлений файлов
- •Вывод и изменение атрибутов файлов
- •Вывод имени либо смена текущего каталога
- •Очистка экрана
- •Запуск новой копии интерпретатора команд Windows
- •Установка цветов для текста и фона в текстовых окнах
- •Сравнение содержимого двух файлов или наборов файлов
- •Копирование одного или нескольких файлов в другое место или с другим именем
- •Вывод или изменение даты
- •Удаление одного или нескольких файлов
- •Вывод списка файлов и подкаталогов из указанного каталога
- •Завершение работы интерпретатора команд
- •Сравнение двух файлов или двух наборов файлов и вывод различий между ними
- •Поиск заданного текста в файлах
- •Просмотр и изменение командных строк, сопоставленных с типом файлов
- •Вывод справочных сведений о командах Windows
- •Создание, изменение и удаление меток тома для дисков
- •Создание каталога
- •Последовательный вывод данных по частям размером в один экран
- •Перемещение одного или нескольких файлов из одного каталога в другой, переименование файлов и папок
- •Вывод или задание пути поиска исполняемых файлов
- •Печать текстового файла
- •Изменение приглашения командной строки
- •Удаление каталога
- •Переименование одного или нескольких файлов.
- •Замена файлов
- •Вывод, задание, удаление и ввод переменных среды
- •Выключение или перезапуск компьютера
- •Сортировка строк стандартного ввода или файла
- •Запуск указанной программы или команды в отдельном окне
- •Сведения о конфигурации операционной системы
- •Завершение процесса по его идентификатору или имени образа
- •Отображение списка процессов
- •Вывод или изменение времени
- •Назначение и возможности пакетных файлов
- •Параметры пакетных файлов
- •Позиционные параметры
- •Модификаторы позиционных параметров
- •Переменные среды в пакетных файлах
- •Параметр errorleveLи переменная %errorlevel%
- •Команды для пакетных файлов
- •Вызов одного пакетного файла из другого
- •Вывод сообщений и переключение режима отображения команд на экране
- •Локализация изменений среды в пакетном файле
- •Циклическое выполнение указанной команды для набора значений
- •Передача управления строке пакетного файла
- •Оператор условного выполнения команд в пакетном файле
- •If условие (команда1
- •Порядок выполнения работы
- •Пример выполнения лабораторной работы
- •Примеры заданий на использование команд в диалоге
- •Список вариантов заданий на разработку пакетных файлов
- •Контрольные вопросы
Переменные среды в пакетных файлах
Если продолжить аналогию с процедурами, то переменные среды, описанные в п. 2.3, играют для пакетного файла роль глобальных переменных, областью памяти для которых служит текущая среда.
При запуске пакетного файла система создает новую среду, которая содержит копии всех переменных текущей среды. После окончания работы пакетного файла восстанавливается прежняя среда, поэтому переменные среды не сохраняют те значения, которые они получили в ходе выполнения пакетного файла.
При выполнении пакетного файла указанные в его строках имена позиционных параметров и переменных среды заменяются их строковыми значениями (возможно, пустыми), после чего полученная строка выполняется как обычная команда консольного режима.
При обращении к значению переменной среды в пакетном файле имя переменной должно быть заключено между символами “%” (см. пример ниже)
Пример. Пусть пользователь хочет написать пакетный файл для «мягкого» удаления ненужных файлов. Такой файл должен выполнять перенос указанного файла в специальный каталог, играющий роль «персональной корзины», аналогичной обычной корзинеWindows. Пользователь впоследствии может либо вернуть файл в исходный каталог, либо действительно удалить его. Соответствующий файл SOFTDEL.BAT может содержать строки:
COPY %1 %MYDELDIR%
DEL %1
Пусть пользователь выполнил команды:
SET MYDELDIR=C:\DELETED
SOFTDEL *.OBJ
После подстановки параметров %1 = *.OBJи%MYDELDIR% = C:\DELETEDбудут фактически выполнены команды:
COPY *.OBJ C:\DELETED
DEL *.OBJ
Параметр errorleveLи переменная %errorlevel%
Любая программа для Windowsпри завершении своего выполнения передает операционной системе целочисленное значение, которое называется кодом завершения программы. По умолчанию код завершения равен 0, и это значение принято считать признаком нормального завершения, т.е. отсутствия каких-либо «нештатных ситуаций» при работе программы. Пользователь может предусмотреть выдачу любых значений кода завершения, при этом ненулевые коды завершения обычно означают, что в ходе работы программы произошли какие-то неприятности (например, не найден входной файл, неверный формат обрабатываемых данных и т.п.).
Если программа была запущена в диалоговом режиме, то значение кода ее завершения никак не используется, теряется. Если же программа запускалась из пакетного файла, то можно проверить значение кода завершения при помощи оператора IF ERRORLEVEL, формат которого описан ниже. Такая проверка позволяет разветвить ход дальнейшего выполнения пакетного файла в зависимости от кода завершения программы.
Другим (более новым и удобным) способом проверки кода завершения программы является анализ содержимого переменной среды %ERRORLEVEL%. Значением этой переменной является строковое представление текущего значения кода ошибки. Это значение можно использовать в условном оператореIF. Кроме того, интерпретируемый характер языка команд позволяет делать вещи, которые невозможны в компилируемом языке типаCилиPascal. Например, команда “GOTO :Label%ERRORLEVEL%” фактически означает следующее: если код завершения предыдущей команды был равен 0, то перейти на метку:Label0; при коде завершения 1 перейти на метку:Label1; при коде 2 – на метку:Label2и т.д.