Практическая работа №2 Работа с командным интерфейсом. Пакетные командные файлы Цель работы: Развитие профессиональных навыков работы с пакетными командными файлами. 1. Определение и назначение командного файла 2. Команды пакетной обработки 3. Переменные в командных файлах Определение и назначение командного файла Командные (пакетные) файлы - особая категория исполняемых файлов. Командные файлы (скрипты, сценарии, батники) - это обычные текстовые файлы с расширением .bat или .cmd, строки которых представляют собой специальные команды командного процессора (интерпретатора команд ) и/или имена исполняемых файлов. Для операционных систем DOS и Windows9X в качестве интерпретатора команд использовался командный процессор command.com, для всех остальных ОС семейства Windows ( NT/2k/XP/Vista/7/8 и старше) -cmd.exe. Несмотря на непрерывное совершенствование средств создания и выполнения сценариев с использованием объектно-ориентированных языков, обычная командная строка и простые командные файлы, по-прежнему остаются основным инструментом для выполнения рутинных действий, диагностики сетевых проблем, автоматизации процессов резервного копирования и т.п. При всех недостатках реализации командного процессора в Windows, достойной альтернативы ему нет, и очевидно в ближайшем будущем, не будет. Пакетный файл (англ. batch file) — текстовый файл в MS-DOS, OS/2 или Windows, содержащий последовательность команд, предназначенных для исполнения командным интерпретатором. После запуска пакетного файла, программа-интерпретатор (как правило, COMMAND.COM или cmd.exe) читает его строка за строкой и последовательно исполняет команды Расширение: *.bat (от англ. batch - "пакет", "группа"). Запуск командного файла осуществляется так же, как запуск исполняемой программы, то есть, указывается имя файла и, если требуется, параметры. Назначение: BAT-файлы служат для организации взаимодействия пользователей с прикладными программами. Состав: текст, который интерпретируется командным процессором. Строки этого текста могут представлять собой: внешние или внутренние команды ОС; обращения к исполняемым программам *.COM или *.EXE, и вызовы других командных файлов; команды для управления выдачей на экран, а также для организации ветвлений и циклов; метки, на которые совершается переход при выполнении заданного в файле условия. Каждая команда находится на отдельной строке. 2. Команды пакетной обработки. а) REM-комментарий в тексте файла. Обычно используют, чтобы временно убрать из текста какую-либо команду. Формат: REM [любая строка] б) ECHO -вывод на экран сообщений. Формат: ECHO [ON или OFF или Сообщение] Параметры ON и OFF включают и выключают выдачу на экран системных сообщений ("эха"). Команда ECHO OFF используется, чтобы не "засорять" экран при исполнении BAT-файла. Произвольная строка после ECHO понимается как сообщение и без изменений выводится на экран. Пустая строка обозначается одной точкой. Примеры: echo. - Перейти к следующей строке; echo Программа не найдена! - Выдает на экран сообщение "Программа не найдена!". в) @. Может быть только первым символом строки и подавляет ее выдачу на экран. Используется только в пакетном режиме. Пример: @echo off - Выключаем "эхо"; из-за символа @ сама команда echo off тоже не выводится на экран; этой строкой обычно начинаются командные файлы. г) PAUSE - приостанавливает вывод на экран, выводит сообщение "Нажмите любую клавишу..." и ждет нажатия любой клавиши. Параметров не имеет. д) IF позволяет проверять условие и выполнять ветвление в зависимости от результата проверки. Общий вид команды: IF [NOT] [условие] [действие], где "действие" - любая команда, выполняемая, если истинно условие. Условие записывается в одной из трех форм, поэтому команда IF имеет три формата. Формат 1. Проверка кода завершения последней перед оператором IF команды. Используется конструкция следующего вида: IF ERRORLEVEL число Любая программа может выработать в момент своего окончания собственный код завершения, который доступен другим программам через переменную с именем ERRORLEVEL. Большинство команд и программ при нормальном завершении устанавливают errorlevel=0. Задав условие if errorlevel 1, Вы определите, что оно будет выполнено, если программа вырабатывает код завершения больший, либо равный 1. Формат 2. Проверка наличия файла в каталоге. Оператор IF имеет вид: IF EXIST имя файла Команда проверяет, существует ли файл с заданным именем. При обнаружении файла условие считается выполненным. Можно использовать маску - тогда условие выполнено, если найден хотя бы один подходящий файл. Формат 3. Сравнение двух строк. Оператор имеет вид: IF [строка_1]==[строка_2] Условие выполняется, если строки 1 и 2 совпадают. Чтобы застраховаться от случая, когда одна из строк оказывается пустой, обе строки заключают в одинаковые символы, например, в квадратные скобки. Любое из этих трех условий может задаваться со знаком логического отрицания NOT. При этом истинность условия трактуется в обратном смысле. Примеры: if exist c:\autoexec.bat type c:\autoexec.bat если в головном каталоге диска c: есть файл autoexec.bat, вывести его на экран; if not exist c:\WORK\*.* echo Нет файлов! если в каталоге WORK нет ни одного файла, вывести соответствующее сообщение; format a: if errorlevel 1 echo Форматирование прошло не безупречно! если программа format установила errorlevel больше нуля,сообщить об ошибке; if %A%==Yes cls если переменная с именем A равна строке 'Yes', очистить экран. Аналогично команда IF может использоваться из командной строки. е) GOTO позволяет передавать управление на заданную метку Формат команды: GOTO метка Метка начинается со знака : Пример: if %A%==Yes goto Clear goto Not_Clear :Clear cls :Not_Clear Если переменная A совпадает со строкой Yes, перейти на метку Clear и очистить экран. В противном случае пропустить очистку экрана. ж) CALL осуществляет вызов одного командного файла из другого с последующим возвратом в вызывающий файл. Формат команды: CALL [имя файла] В имени вызываемого файла могут содержаться дополнительные параметры, которые обрабатываются вызванным файлом. Пример: Вызывающий командный файл: (example.bat) @echo off echo Файл запущен! call version echo Продолжаем! Вызываемый командный файл: (version.bat) @echo off echo Ваша версия операционной системы: ver pause example.bat вызывает version.bat, после выполнения которого вновь получает управление. Задание №1: 1. Создайте командный файл Help.bat в фамильной папке (copy con имя файла) 2. Прокомментируйте каждую строку файл Help.bat (REM) 3. Предусмотрите в Help.bat следующие действия: 3.1. cоздать файл copy.help, содержащий описание команды copy (help copy > copy.txt) 3.2. cоздать файл move.help, содержащий описание команды move (help move > move.txt) 3.3. вывести содержимое *. txt на экран, ознакомиться со справкой (type copy.help) 3.4. cоздать каталог msdos-help (md spravka) 3.5. переместить в него файлы copy. txt move.txt (move *.txt spravka) 4. Отобразить полученные результаты с помощью tree/f Задание №2: 1. В корневом каталоге диска D с помощью командной строки создать дерево каталогов cогласно рисунку: 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Убедиться в полученном результате с помощью tree В каталоге All с помощью командной строки создать файлы: 1.txt, 2.txt, 3.txt. Сохраните в файлах следующий текст: В 1.txt – «Бороться и искать» В 2.txt – «найти» В 3.txt – « и … не бороться (((!» Убедиться в полученном результате с помощью tree/f Создать пакетный командный файл lesson1.bat в каталоге All, описать следующую последовательность команд и прокомментировать каждую из них с помощью команды REM Удалить каталог В3, в каталоге А3 Удалить каталог В2 в каталоге А2 Cоздать подкаталоги В4 и В5 в каталоге А1 Скопировать файл 1.txt в каталог А2 и переименовать его в файл 12.txt. Вывести на экран поочередно информацию, хранящуюся во всех текстовых файлах в каталоге All. Скопировать все текстовые файлы из каталога All в каталог С2. Объединить все текстовые файлы, хранящиеся в каталоге С2, в файл man.txt и вывести его содержимое на экран.( copy 1.txt+2.txt+3.txt man.txt – обьединение) Вывести на экран дерево каталогов каталога All с файлами. Результат выполнения заданий №1-9: Результат выполнения задания: Переменные в командных файлах используются для обмена информацией между отдельными командами. Существуют два их вида: 1) переменная, определяемая в цикле. Ее имя состоит символа процента (в старых версиях DOS/Windows - двух символов) и последующих букв, например, %A. Набор значений, которые последовательно принимает такая переменная, задается при ее определении в команде for (см. ниже). 2) переменная окружения. Она определяется внутренней командой DOS вида SET [имя]=[значение], где имя и значение - произвольные строки, и в течение всего сеанса работы хранится в специальной области памяти, называемой "системным окружением". Системное окружение управляется командным интерпретатором command.com. Чтобы использовать переменную окружения в командном файле нужно ее имя заключить в символы процента %, например, командами set weekday=sunday echo %weekday% переменной с именем weekday присваивают значение sunday и выводят ее значение на экран командой ECHO. Для просмотра окружения можно использовать команду SET без параметров. Переменная окружения (переменная среды́, англ. environment variable) в Windows используются для хранения текстовых строк пользователя и информации о настройках операционных систем Задание № 3: 1. Используя команду SET из окна командной строки выяснить значения переменных среды заданы в системе. 2. Выведите в файл lab1.txt значения переменных окружения (например:SET APPDATA >lab1.txt) 3. Заполните таблицу их значениями: Название переменные среды Значение APPDATA Возвращает используемое по умолчанию размещение данных приложений. CD Идентична команде CD без аргументов. COMPUTERNAME Имя компьютера DATE Возвращает текущую дату. Использует тот же формат, что и команда date /t. Создаётся командой Cmd.exe. HOMEDRIVE Возвращает имя диска локальной рабочей станции, связанного с основным каталогом пользователя. Задаётся на основании расположения основного каталога. Основной каталог пользователя указывается в оснастке «Локальные пользователи и группы». HOMEPATH Возвращает полный путь к основному каталогу пользователя. Задаётся на основании расположения основного каталога. LOCALAPPDATA Возвращает используемое по умолчанию локальное размещение данных приложений NUMBER_OF_PROCESSORS Количество процессоров в системе (фактически, количество ядер). OS Название операционной системы. Windows XP и Windows 2000 отображаются как Windows_NT. PATHEXT Возвращает список расширений файлов, которые рассматриваются операционной системой как исполняемые. PROCESSOR_LEVEL Номер модели процессора. Результат PROGRAMFILES Путь к каталогу Program Files. SYSTEMDRIVE Диск, на котором расположен корневой каталог Windows. SYSTEMROOT Путь к корневому каталогу Windows. TIME Возвращает текущее время. Использует тот же формат, что и команда time /t. Создаётся командой Cmd.exe. Дополнительные сведения о команде time см. в разделе Time. USERDOMAIN Имя домена, которому принадлежит текущий пользователь. USERNAME Имя текущего пользователя. WINDIR Каталог, в котором установлена Windows. 4. Выведите экран значения переменных окружения TIME, WINDIR, USERDOMAIN с помощью команды echo (чтобы получить значение переменной в командных файлах, используют ее имя, заключенное в знаки процента %) 5. В отчете приведите примеры набранных вами команд.