Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лабораторная работа №2 «Программирование командных BAT-файлов в Windows»Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте Лабораторная работа №2 «Программирование командных BAT-файлов в Windows» ТЕОРИЯ Переменные окружения При загрузке ОС Windows в оперативной памяти постоянно хранится набор т.н. переменных окружения (environment variables). Хотя в Windows есть более совершенный способ для хранения системных значений – реестр, многие программы по-прежнему используют переменные окружения. Наиболее важные переменные хранят системный путь для поиска (PATH), каталог запуска Windows (WINDIR), место хранения временных файлов (TEMP). Переменные устанавливаются с помощью команды SET [переменная=[строка]] Запуск SET без параметров приводит к выводу списка переменных среды. Для получения их значений (всегда строки) нужно имя соответствующей переменной заключить в символы «%», например: %TEMP%. Основные команды Остановимся подробнее на командах работы с файловой системой: ATTRIB, CD, COPY, XCOPY, DIR, MKDIR, RMDIR, DEL, DELTREE, REN, MOVE, SUBST, VOL, LABEL. ATTRIB [+R | -R] [+A | -A] [+S | -S] [+H | -H] [[диск:][путь]имя_файла] [/S] Используется для просмотра или установки атрибутов файлов. В Windows 9x можно использовать 4 атрибута: Read-Onlу (R) – только для чтения; System (S) – системный; Archive (A) – архивный; Hidden (H) – скрытый. Установка атрибута производится ключом «+», снятие – «-». Ключ «/S» применяется для обработки файлов во всех подкаталогах указанного пути. Например, сделать все Word-файлы в каталоге «Мои документы» доступными только для чтения: ATTRIB +R “C:\Мои документы\*.doc”. Атрибуты фалов можно просмотреть/поменять в файловых менеджерах или проводнике (пункт «Свойства» в контекстном меню по правой клавише). CHDIR (CD) [диск:] [путь\] Текущий каталог можно изменить с помощью команды CD. Например, переход в корневой каталог диска – CD \, на уровень выше – CD.., в каталог «Мои документы» - CD ”\Мои документы”. В Windows NT с помощью ключа /D можно сменить не только текущий каталог, но и диск, например: CD /D D:\Texts. Кроме того, в Windows NT можно не заключать имена длинных каталогов в кавычки – CD.\Мои документы. COPY [/A | /B] источник [/A | /B] [+источник [/A | /B] [+ …]] [результат [/A | /B]] [/V] [/Y | /-Y] Наиболее часто используемая команда для копирования одного или нескольких файлов. Описание ключей сведено в таблицу:
Действие ключа /B означает копирование всего файла побайтно, а ключ /A приводит к копированию только данных, предшествующих первому символу конца файла. В качестве источника или результата при копировании можно указывать имена не только файлов, но устройств компьютера: PRN – принтер, LPT1-LPT3 – соответствующие параллельные порты; AUX – устройство, присоединяемое к последовательному порту 1; COM1-COM3 - соответствующие последовательные порты; CON – терминал (при вводе – это клавиатура, а при выводе – монитор); NUL – пустое устройство (все операции игнорируются). Например, для печати файла на принтере можно ввести команду COPY abc.txt PRN, для создания файла COPY CON my.txt (для конца файла ввести <CTRL>+<Z>). Команда COPY может объединять (склеивать) несколько файлов путем использования групповых знаков «*» и «?» (COPY /B *.dat all.dt) или знака конткатенации «+» (COPY /B 1.txt+2.txt 3.txt). Здесь ключ /B используется для предотвращения усечения соединяемых файлов, т.к. по умолчанию файлы считаются текстовыми. Среди недостатков команды COPY надо отметить невозможность копирования скрытых системных файлов, замены файлов с атрибутом «Read Only», а также копирования открытых (занятых) файлов (в этом случае процесс просто прерывается). Некоторые из этих проблем можно решить с помощью утилиты XCOPY. XCOPY источник результат [/A | /M] [/D[:дата]] [/P] [/S [/E]] [/W] [/C] [/I] [/Q] [/F] [/L] [/H] [/R] [/T] [/U] [/K] [/Y | /-Y] Команда XCOPY работает только с файлами и каталогами (а не с устройствами). Используемые ключи рассмотрим в табличном виде:
При использовании команды XCOPY внутри пакетных файлов по переменной ERRORLEVEL (см. в след. разделе) можно анализировать код выхода (завершения) команды (0 – без ошибок, 1 – файлы не найдены, 2 – прерывание по <CTRL>+<C>, 4 – не хватает места, ошибка в назначении или синтаксисе, 5 – ошибка записи на диск). DIR [диск:][путь][имя_файла] [/A[[:]атрибуты]] [/B] [/C] [/D] [/L] [/N] [/O[[:]порядок]] [/P] [/Q] [/S] [/T[[:]время]] [/W] [/X] [/4] Выводит информацию о содержимом дисков и каталогов. При использовании без ключей выводит метку диска, имена (в коротком и длинном вариантах) файлов и подкаталогов, находящихся в текущем подкаталоге, а также дату и время их последней модификации. В завершении выводится общее число файлов в каталоге, их объем и размер свободного пространства. Ключи команды DIR позволяют задать различные режимы расположения, фильтрации и сортировки выводимой информации:
Стандартный набор ключей можно записать в переменную среды DIRCMD. Для отмены их действия введите в команде те же ключи с префиксом "-", например: /-W. Команда DIR (так же как и другие) поддерживает перенаправление ввода-вывода (символы «>» и «>>»), например команда: DIR “C:\Мои документы” /W/O:N > PRN выполняет печать в широком формате в алфавитном порядке на принтер. MKDIR (MD) [диск:]путь RMDIR (RD) [диск:]путь Применяются соответственно для создания нового каталога и удаления существующего пустого каталога. Команда MKDIR не будет выполнена, если каталог или файл с заданным именем уже существуют, а RMDIR – если удаляемый каталог не пустой. В Windows NT появилась возможность удалять подкаталоги (RD /S), и создавать полный путь – MD \A\B\C\D. DEL [диск:][путь]имя_файла [/P] ERASE [диск:][путь]имя_файла [/P] Удаляют один или несколько файлов. Ключ /P означает выдачу запроса на удаление (при задании удаления всех файлов DEL *.* или DEL. запрос будет всегда). В Windows NT добавлены параметры для удаления файлов с атрибутом «Только для чтения» (/F), подкаталогов (/S), отмены подтверждений (/Q), а также удаления файлов, не имеющих заданных атрибутов (/A:атрибуты). DELTREE [/Y] [диск:]путь Используется для удаления каталога вместе со всеми подкаталогами и файлами. Ключ /Y используется для отключения запроса на подтверждение. RENAME (REN) [диск:][путь][каталог1 |файл1] [каталог2 | файл2] Переименовывает файлы или каталоги. Так же как и в команде DEL можно использовать групповые символы «*» и «?», например: REN *.txt *.doc. В этой команде нельзя указать другой диск или каталог для результата – для этих целей надо использовать команду MOVE. MOVE [/Y | /-Y] [диск:][путь]имя_файла1[,…] рез_файл MOVE [/Y | /-Y] [диск:][путь]каталог1 каталог2 Эта команда перемещает и переименовывает файлы или каталоги. SUBST [диск1: [диск2:]путь] Сопоставляет заданному пути имя виртуального диска. Часто нужно для инсталляции программ (эмуляции корневого каталога CD). Например: SUBST F: C:\INSTALL\DELPHI5. Ключ /D используется для удаления ранее созданного виртуального диска: SUBST F: /D. SUBST без параметров выводит текущий список виртуальных дисков (нельзя назначать их на сетевые каталоги). VOL [диск:] LABEL [диск:][метка] Команды выводят и задают метку тома.
Командные bat-файлы Командный (пакетный) файл в Windows 9x – это обычный текстовый файл с расширением bat, в котором записаны допустимые команды ОС, а также некоторые инструкции (ключевые слова) для алгоритмизации действий. Например, deltmp.bat удалит все временные файлы в каталоге Windows\Temp: C: \ CD %TEMP% ATTRIB –R *.tmp DEL *.TMP Основной командой для вывода информации в пакетных файлах служит: ECHO [сообщение] С учетом перенаправления может выводить сообщения куда угодно (порты, принтер и т.п.). Например, ECHO Привет! > hi.txt направляет сообщение в текстовый файл. По умолчанию команды пакетного файла перед исполнением выводятся на экран, что не очень эстетично. С помощью команды ECHO OFF можно отключить дублирование вывода команд на экран. ECHO ON восстанавливает режим дублирования. Кроме этого, можно отключить дублирование отдельной строки, если предварить ее символом «@». И, наконец, может вывести пустую строку комбинацией ECHO. (с точкой в конце). @ECHO OFF ECHO Привет! ECHO. ECHO Пока … При запуске командных файлов в командной строке можно указывать произвольно е число параметров, которые затем можно использовать внутри пакетного файла. Для доступа к параметрам применяются символы %0 – имя файла, %1-%9 – значения первых девяти параметров соответственно. Например, имеется командный файл copier.bat следующего содержания: @ECHO oFF CLS ECHO Файл %0 копирует каталог %1 в %2 XCOPY %1 %2 /S При запуске его из командной строки с 2 параметрами: copier.bat C:\Programs D:\Backup на экран выводится сообщение «Файл copier.bat копирует каталог C:\Programs в D:\Backup» и происходит соответствующее копирование. При необходимости можно использовать более девяти параметров командной строки с помощью команды SHIFT, которая изменяет значения замещаемых параметров с %0 по %9, копируя каждый параметр в предыдущий. Значение %1 – в %0, %2 в %1 и т.д., 10 параметр в %9. Команда, обратная SHIFT, отсутствует, поэтому восстановить параметры уже не удастся. Кроме того, в командных файлах можно использовать переменные окружения и объявлять собственные с помощью команды SET. Все переменные рассматриваются как строки и в Windows 9x над ними нельзя производить арифметические действия (в отличие от NT), а только конкатенацию (просто слитно 2 переменные без знака «+»). Например, в результате выполнения командного файла: SET A=Первый SET B=Второй SET C=%A%%B% ECHO Переменная С=%С% на экран выведется «Переменная С=ПервыйВторой». Для управления выполнением командных файлов существуют команды приостановки, перехода, условного ветвления, циклов и вызова внешних командных файлов. Для того, чтобы прервать выполнение командного файла, надо нажать <CTRL> +<C> или <CTRL>+<Break> (в Windows NT есть команда выхода EXIT /B). Для приостановки с выдачей запроса на нажатие любой клавиши есть команда PAUSE, которую рекомендуется использовать перед выполнением потенциально опасных действий. Например: ECHO Сейчас будут удалены все файлы в каталоге C:\Мои документы PAUSE DEL “C:\Мои документы\*.*” Для организации циклов используется конструкция: FOR %%переменная IN ( множество ) DO команда [параметры] Отличие от классических языков программирования в том, что не происходит регулярного приращения счетчика, а вместо этого используется заданный список значений в параметре множество. Скобки здесь обязательны, внутри которых одно или несколько строковых значений, разделенных запятыми. Например: @ECHO OFF FOR %%i IN (Раз, Два, Три) DO ECHO %%i напечатает следующее: Раз Два Три В качестве переменных цикла можно использовать лишь имена, состоящие из одной буквы. Как видите, нет командных скобок (типа begin end), поэтому весь цикл должен быть записан в одной строке, вложенные циклы не допускаются. В параметре множество можно представить одну или несколько групп файлов. Например, для вывода всех файлов с расширениями *.doc и *.txt: FOR %%f IN(C:\TEXT\*.doc C:\TEXT\*.prn) DO ECHO %%f >> list.txt Из одного командного файла можно вызвать другой просто указав его имя. Однако в этом случае управление назад не вернется, для этого существует команда CALL, с помощью которой можно в командных файлах организовать подобие подпрограмм. Например, командный файл proc.bat: @ECHO OFF ECHO Записываем файл %1.txt ECHO Параметр вызова: %1 > %1.txt можно вызвать в другом пакетной файле: FOR %%i IN (Первый, Второй, Третий) DO CALL proc.bat %%i в результате proc.bat вызывается 3 раза и создает 3 файла – Первый. txt, Второй. txt и Третий.txt с соответствующим текстом. Командный файл может содержать метки, начинающиеся с двоеточия («:») и команды GOTO перехода к этим меткам. Имя метки задается набором символов, следующих за двоеточием до первого пробела или конца строки. Например: @ECHO OFF GOTO Label1 REM Продолжение выполнения DIR C помощью команды IF в пакетных файлах можно выполнять обработку условий 3 типов: 1) IF [NOT] строка1==строка2 команда Условие считается истинным (обратите внимание на 2 знака равно) при точном совпадении обеих строк (регистр имеет значение). Строки могут быть литеральными (кавычки для них не требуются) или представлять значения переменных. Например: IF %1%==Петя ECHO Привет, Петя! Для предотвращения синтаксических ошибок в случае отсутствия переменных или параметров, рекомендуется при сравнении строк приписывать им вначале какой-нибудь символ, например: IF -%MyVar%==-C:\ ECHO OK! 2) IF [NOT] EXIST файл команда Проверка существования заданного файла (кавычки для имени также не требуются, кроме длинных). Например: IF NOT EXIST C:\autoexec.bat ECHO У вас нет файла автозагрузки! IF EXIST “C:\Мои документы\Работа.doc” ECHO Все в порядке! 3) IF [NOT] ERRORLEVEL число команда Условие считается истинным, если последняя запущенная программа или команда завершилась с кодом возврата, равным либо превышающим указанное число. Например: xcopy my.txt c:\ > nul Goto EndBatch :ErrOccurred echo При выполнение команды возникла ошибка! :EndBatch К сожалению, в командных файлах нет возможности организовать полноценный диалог с пользователем путем ввода строк с клавиатуры. Единственное средство – команда CHOICE, которая выводит подсказку и ждет выбора пользователем варианта из указанного набора клавиш. CHOICE [/C[:]варианты] [/N] [/S] [/T[:]c,nn] [текст]
Если в команде не задается текст, то пользователь видит на экране только подсказку. Рассмотрим подробно ключи этой команды:
После выполнения команды CHOICE переменная ERRORLEVEL приобретает значение, равное номеру варианта ответа, что позволяет использовать команду IF для организации ветвления. Если происходит ошибка, CHOICE возвращает 255, прерывание по <CTRL>+<C> или < CTRL >+<Break> - 0. В качестве примера рассмотрим простейшее меню: @ECHO OFF ECHO Выберите режим ECHO 1 - Простой ECHO 2 - Расширенный ECHO. ECHO Выход из меню GOTO Done :Choice1 ECHO Выбран пункт 1 GOTO Done :Choice2 ECHO Выбран пункт 2 GOTO Done :Done BAT-файлы Если Вам требуется последовательно запускать несколько программ Windows, то Вы можете написать для этого.bat файл. Используйте команду START с ключом /W. Например создайте текстовый файл со следующим текстом: @START /W /MAX "C:\WINDOWS\SCANDSKW.EXE /A /N" @START /W /MAX "C:\WINDOWS\DEFRAG.EXE /ALL /F /NOPROMPT" И сохраните его как 1.bat (обратите внимание на кавычки!). Кроме /W, Вы можете использовать следующие ключи: /M Запускает программу минимизированно /MAX Запускает программу, развернув на весь экран /R Запускает программу в окне (используется по умолчанию) Передача параметров в bat-файл. Для того чтобы bat-файл можно было запускать с какими-то параметрами надо в том месте файла, куда вы хотите добавить параметр, набрать %1 - для первого параметра, %2 - для второго и т.д. Например (файл test.bat): /тут идут какие-то /..... /подготовительные работы rar m file%1 Теперь если вы запустите этот файл командой "test.bat 0001", то у вас будет создан файл с именем file0001.rar Как автоматизировать ответы на запросы? Большинство команд не требуют подтверждения действий, но есть и такие, как например требование ввести пароль для запуска программы, где должен быть задействован пользователь. Чтобы система отвечала на запросы автоматически: echo <password> | logon harchenko При этом запускается команда "logon harchenko", которая вводит пароль в ответ на сответствующее требование системы УПРАЖНЕНИЯ 1. Пусть имеется текстовый файл protokol.txt, в котором хранится журнал обработанных файлов в следующем формате: <имя файла> <дата> <время> Слово дата здесь начинается в каждой строке с двадцатой позиции. Необходимо написать командный файл, с помощью которого сделать выборку из этого файла (т. е. создать новый текстовый файл с нужной информацией) за заданный месяц (мм) и год (гггг) в файл ммгггг-.txt, сформированный файл упорядочить по дате обработки. Нужные месяц и год указать как параметры командной строки. Решение: Практически все нужные действия выполняются с помощью конвейеризации команд find и sort: @ЕСНО OFF IF -%1==- GOTO NoParam IF -%2==- GOTO NoParam GOTO End :NoParam ECHO He заданы необходимые параметры командной строки! PAUSE :End
2. Написать командный файл, который будет копировать из текущего каталога все файлы с расширением txt, кроме одного файла, указанного в качестве второго параметра командной строки, в каталог, указанный первым параметром. Если имя каталога, в который должно производиться копирование, не задано, то вывести сообщение об этом и прервать выполнение файла. Решение: Для выполнения поставленной задачи можно перебрать в цикле все файлы с расширением txt, проверяя перед копированием имя каждого из этих файлов: @ЕСНО OFF GOTO End :NoDir ECHO He указан каталог для копирования! PAUSE :End
3. Задание аналогично второму упражнению. Дополнительные требования: а) переписывать только те файлы, которые новее одноименных в каталоге - приемнике, б) не прерывать копирование в случае возникновения ошибки, в) записывать в файл logcopy.txt имя каждого копируемого файла и результат выполнения операции для него. Другими словами, файл logcopy.txt должен быть примерно таким: Успешно: а.txt Ошибка: b.txt Успешно: с.txt Решение: В этом упражнении нужно создать два пакетных файла. В основном файле работает такой же цикл for, как и в предыдущем упражнении, однако вместо непосредственного выполнения команды copy здесь вызывается командный файл 3_1. bat: @ЕСНО OFF GOTO End :NoDir ECHO He указан каталог для копирования! PAUSE :End Вызываемый в цикле файл 3_1.bat имеет следующее содержимое: @ЕСНО OFF REM Копирование файла XCOPY %1 %2 /D /С > NUL GOTO End :Success CLS IF -%1==- GOTO NoDir RЕМ Вывод меню на экран ECHO A - На экран ECHO Б - В файл C:\catalog.txt ECHO В - На принтер CLS ECHO Выбор не был сделан. GOTO End :DirToCon DIR %1 | MORE GOTO End :DirToFile DIR %1 > C:\catalog.txt GOTO End :DirToPrn DIR %1 > prn GOTO End :NoDir ECHO He указан каталог для сканирования! PAUSE :End
ЗАДАНИЯ Разработать пакетный bat-файл. В пакетных файлах предусмотреть сообщение имени, назначения, применения и автора пакетного файла (при пустой командной строке и по ключу /?), контроль верности командной строки, наличие требуемых файлов и сохранность имени пакетного файла. Текущий каталог не изменять, если это специально не оговорено. Там, где необходимо, имена файлов указывать с полным путем и диском. С клавиатуры при работе пакетного файла вводить только числа, строковые данные выбирать либо из меню, либо передавать в командной строке.
ЛИТЕРАТУРА 1. Финогенов Ms-Dos: Самоучитель по системным функциям, Горячая линия-телеком, 2001, 382 стр. 2. Панкратов Операционная система MS-DOS 6.22: Справочное пособие, Познавательная книга плюс, 2001, 224 стр. 3. Губин А. Работа в Ms-Dos для всех: Практическое пособие, Радио и связь, 1993, 160 стр. 4. Франкен Г., Молявко С. MS-DOS 6.2 для пользователя, Киев, BHV, 1994, Москва, БИНОМ, 1994. 5. Фигурнов В. IBM PC для пользователя, г.Уфа, НПО “Информатика и Компьютеры”, 1993. 6. Руководство по программированию под управлением MS DOS:Пер.с фр./Пьеро Ф.,Люкзак Ж.-Л.,Рейко Ф.;Под ред.Пьеро Ф..-М.:Радио и связь,1995.-544с.
Лабораторная работа №2 «Программирование командных BAT-файлов в Windows» ТЕОРИЯ
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2017-02-17; просмотров: 690; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.009 с.) |