Программирование командных BAT-файлов в Windows» 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Программирование командных BAT-файлов в Windows»



Лабораторная работа

«Перенаправление ввода/вывода.

Программирование командных BAT-файлов в Windows»

Перенаправление ввода-вывода

Назначение потоков

Ввод/вывод в операционных системах (как MS-DOS, так и UNIX) может быть организован двумя принципиально разными способами. Первый способ - это прямое программирование устройств ввода/вывода (дисковода, экрана, модема, клавиатуры). Он может быть организован на различных уровнях (непосредственное программирование устройств, использование сервисных средств операционной системы, смешанный подход и т.д.), но суть его при этом не меняется. Каждая программа, написанная с использованием этого способа, может работать только с этим устройством и ни с каким другим. В настоящее время используется именно этот способ. Именно с помощью этого подхода (точнее, путем "косвенного" программирования периферийных устройств через драйверы этих устройств) и реализован классический WIMP - интерфейс, о котором уже было много сказано в предыдущей главе. Он позволяет создавать красивые и довольно содержательные средства общения с пользователем (меню, окна и тому подобное), а современные технологии позволяют программе при установке автоматически настраиваться на установленное на компьютере оборудование. Но у этих систем есть недостаток: они не могут принять данные с устройств и передать данные устройствам, для работы с которыми они не созданы. Например, нельзя данные вводить с модема, если программа работает только с клавиатурой. Чтобы осуществить это, используют другой способ: ввод/вывод с использованием потоков. В этом случае каждое устройство рассматривается операционной системой как файл, куда можно поместить и откуда можно взять информацию. Так же, как информация, записанная в файл, рассматривается операционной системой как единое целое, не зависимо от способа записи его на диске, так и физическая реализация процесса ввода/вывода информации устройством никак не отражается на работе пользователя.

Ограничение потоков.

Как правило, эффект, достигаемый прямым программированием устройств, невозможно реализовать на уровне потоков (нельзя даже поменять цвет символов, не говоря уж о применении графики!) Но выигрыш в унификации процессов иногда оказывается более существенным, например, при работе с текстовой информацией, при автоматическом проведении эксперимента и тому подобное.

Определение и классификация потоков.

Поток, скажем так, представляет собой некоторый буфер в памяти, куда поступает или откуда выбирается информация. Существуют следующие стандартные потоки:

1. Стандартный поток ввода - это обычно клавиатура.

2. Стандартный поток вывода - это обычно монитор.

3. Стандартный поток вывода ошибок и диагностических сообщений (стандартный поток ошибок) - это обычно дисплей (монитор).

Переназначение потоков.

Использование потоков не имело бы никаких преимуществ перед прямым программированием устройств, если бы их нельзя было переназначать с одного устройства на другое, а также переназначить ввод/вывод информации устройством в файл. Для этого используются следующие конструкции (в DOS и UNIX).

- переназначает стандартный поток вывода другому устройству (или файлу). Если этот файл существует, он очищается, и на его место записывается новая информация. Используется в DOS и UNIX. В UNIX те же действия может осуществлять конструкция 1>.

- То же самое, но если файл существует, то новая информация записывается в конец этого файла. Используется в DOS и UNIX. Для UNIX также можно использовать конструкцию 1>>.

Конвейерная обработка.

Символы переадресации очень удобны, но иногда бывает необходимо организовать последовательность программ, выполняющих обработку информации, причем результат редыдущей программы является исходным для следующей. При этом промежуточные данные желательно никуда не записывать. Чтобы организовать такую обработку, используют знак '|' конвейера. Команды-"цепочки" такой обработки данных просто записываются в одну строку в порядке их вызова для обработки данных, и отделяются одна от другой знаком конвейера '|'. Пример:

sort < mylist | more.

В этом примере данные из файла mylist сортируются программой sort и постранично выводятся на экран программой more.

В UNIX тоже возможна переадресация потока с одновременным выводом данных на экран, и даже переадресация на два разных устройства. Для переадресации стандартного вывода в файл с одновременной выдачей информации на экран используется команда tee. Например, команда cat в UNIX позволяет просматривать файл. Следующая конструкция:

cat first | tee second

копирует файл first в файл second, одновременно показывая его на экране.

Резюме.

Итак, в этом разделе Вы кратко познакомились с понятием потока, дескриптора файла в интерфейсе ввода/вывода операционных систем, а также научились перенаправлять потоки операционных систем. Понятие потока тесно связано с понятиями "буфер ввода/вывода" и "кэширования диска". Об этих понятиях уже говорилось во втором выпуске данной серии. В этой части объяснилось назначение этих элементов. Также Вы познакомились с понятием "конвейер" и правилами его использования.

Напоследок приводим таблицы, в которой кратко приводятся данные, описанные в этом разделе.

Устройство Обозначение в DOS.
Консоль CON
1-й параллельный порт LPT1
2-й параллельный порт LPT2
Принтер (синоним LPT1) PRN
1-й последовательный порт COM1
2-й последовательный порт COM2
3-й последовательный порт COM3
4-й последовательный порт COM4
Модем (синоним COM1) AUX
Пустое устройство NUL

 

Символ Смысл перенаправления
> Перенаправляет стандартный вывод на другое устройство или в файл. Содержимое файла при этом теряется.
>> Перенаправляет стандартный вывод в файл. Содержимое файла не теряется. Запись идет в режиме добавления.
< Осуществляет (перенаправляет) стандартный ввод с другого устройства или из файла.
| Символ конвейерной обработки. Выходные данные работы программы, расположенной слева, передаются на вход программы, расположенной справа от знака конвейера.

Переменные окружения

При загрузке ОС 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]

Наиболее часто используемая команда для копирования одного или нескольких файлов. Описание ключей сведено в таблицу:

Параметр Описание
источник имя копируемого файла или файлов
/A файл является текстовым файлом ASCII (символ <CTRL>+<Z> в конце)
/B файл является двоичным
результат каталог для результата копирования и/или имя создаваемого файла
/V проверка правильности копирования путем сравнения источника и приемника
/Y отключение режима запроса подтверждения на замену файлов
/-Y включение режима запроса подтверждения на замену файлов

Действие ключа /B означает копирование всего файла побайтно, а ключ /A приводит к копированию только данных, предшествующих первому символу конца файла. В качестве источника или результата при копировании можно указывать имена не только файлов, но усиройств компьютера:

RN – принтер,

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 работает только с файлами и каталогами (а не с устройствами). Используемые ключи рассмотрим в табличном виде:

Ключ Описание Пример
/A Копирование только файлов с установленным архивным атрибутом. Сам атрибут при этом не изменяется. XCOPY С:\A\*.* D:\B /A
/M Копирование только файлов с установленным архивным атрибутом. После копирования атрибут снимается.  
/D Копирует только файлы, измененные не ранее указанной даты. Если дата опущена – то если источник новее результата. XCOPY C:\MY\*.* D:\BACKUP /D
/S Копирование каталогов с подкаталогами (кроме пустых), /E – в том числе пустых XCOPY C:\A\*.* D:\B /S /E
/W Режим запроса на нажатие любой клавиши до начала копирования  
/C Продолжение в случае возникновения ошибок  
/I Копирование нескольких файлов, когда файл назначения отсутствует. В этом случае считает, что файл назначения д.б. каталогом и создает его без дополнительных запросов XCOPY *.txt TEXT /I
/V (9x) Сравнение конечных файлов с исходными  
/P Вывод запросов перед созданием каждого нового файла  
/Q, /F, /L Запрет вывода имен копируемых файлов, /L – вывод имен, /F – полных  
/G (2000) Копирование зашифрованных файлов в каталог результата, не поддерживающий шифрование  
/H Копирование скрытых и системных файлов (среди прочих)  
/R Разрешение замены файлов, предназначенных только для чтения  
/T Создание структуры каталогов (кроме пустых каталогов) без копирования файлов. Если требуется создать пустые каталоги и подкаталоги - /T /E.  
/U Копирование только файлов, уже имеющихся в конечном каталоге  
/K Копирование атрибута "Только чтение" (обычно он сбрасывается)  
/N Использование коротких имен при копировании  
/O (NT) Копирование сведений о владельце и данных ACL  
/X (NT) Копирование параметров аудита файлов (требует /O)  
/Y /-Y Подавление (обязательный) запроса подтверждения на перезапись существующего конечного файла  
/Z (NT) Копирование сетевых файлов с возобновлением  
/EXCLUDE:файл1[+файл2]… (NT) Исключение определенных файлов из операции копирования XCOPY *.txt D:\TeXT /EXCLUDE:1.xtx

При использовании команды 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 позволяют задать различные режимы расположения, фильтрации и сортировки выводимой информации:

Ключ Описание Пример
/A Вывод файлов с указанными атрибутами (D-каталоги, A, R, S, H – как обычно. Префикс «-» будет иметь значение НЕ. DIR C:\ /A:HS
/B Вывод только имен файлов (переопределяет /W)  
/C Применение разделителя групп разрядов для вывода размеров файлов (по умолчанию). Для отключения /-C.  
/D (NT) Вывод списка в несколько столбцов с сортировкой по столбцам  
/L Использование нижнего регистра для имен файлов  
/N Отображение имен файлов в крайнем правом столбце  
/O Сортировка списка отображаемых файлов (префикс "-" обращает порядок): · N - по имени (алфавитная) · S - по размеру (сперва меньшие) · E - по расширению (алфавитная) · D - по дате (сперва более старые) · G - начать список с каталогов · A – по дате загрузки (начиная с более старых) По умолчанию файлы и каталоги выводятся в том порядке, в котором хранятся на диске. DIR /O:N
/P Пауза после заполнения каждого экрана  
/Q (NT) Вывод сведений о владельце файла  
/V (9x) Вывод расширенных сведений о файлах и каталогах  
/S Вывод списка файлов из указанного каталога и его подкаталогов  
/T Выбор поля времени для отображения и сортировки: · C – создание · A - последнее использование · W - последнее изменение  
/W Вывод списка в несколько столбцов  
/X Отображение коротких имен для файлов, чьи имена не соответствуют стандарту 8.3  
/4 (9x) Вывод номера года в четырехзначном формате  

Стандартный набор ключей можно записать в переменную среды 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] [текст]

Если в команде не задается текст, то пользователь видит на экране только подсказку. Рассмотрим подробно ключи этой команды:

Ключ Описание Пример На экране
задает варианты ответа, по умолчанию YN CHOICE /C:ync Как дела? Yes, No, Cancel [Y, N, C]? Как дела
/N выводит только текст без вариантов ответа (клавиши для ответа работают) CHOICE /N Ну как Ну как
/S учет регистра символов (по умолчанию верхний и нижний воспринимаются одинаково)    
/T c – символ по умолчанию, который вводится после указанной в nn секунд паузы CHOICE /c:ync /t:N,10 [Y, N, C]? (после 10 сек выбирается N)

После выполнения команды 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

Упражнения

1. Пусть имеется текстовый файл protokol.txt, в котором хранится журнал обработанных файлов в следующем формате:

<имя файла> <дата> <время>

Слово дата здесь начинается в каждой строке с двадцатой позиции.

Необходимо написать командный файл, с помощью которого сделать выборку из этого файла (т. е. создать новый текстовый файл с нужной информацией) за заданный месяц (мм) и год (гггг) в файл ммгггг-.txt, сформированный файл упорядочить по дате обработки. Нужные месяц и год указать как параметры командной строки.

Решение:

Практически все нужные действия выполняются с помощью конвейеризации команд find и sort:

@ЕСНО OFF

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-файл (см. таблицу). В пакетных файлах предусмотреть сообщение имени, назначения, применения и автора пакетного файла (при пустой командной строке и по ключу /?), контроль верности командной строки, наличие требуемых файлов и сохранность имени пакетного файла. Текущий каталог не изменять, если это специально не оговорено. Там, где необходимо, имена файлов указывать с полным путем и диском. С клавиатуры при работе пакетного файла вводить только числа, строковые данные выбирать либо из меню, либо передавать в командной строке.

 

Задание
  Разработать пакетный файл для обновления архива. Выбор архиватора осуществляется из меню. Имя архива передается в командной строке.
  Разработать пакетный файл для очистки подкаталога с подтверждением.
  Разработать пакетный файл для проверки дисков (каталогов) на вирусы. Диск выбирается из меню. Имя антивирусной программы - в командной строке (drwebw.exe).
  Разработать пакетный файл для выбора из меню на запуск одного из нескольких редакторов (notepad, ncedit и др.) для редактирования требуемого файла. Имя файла передается в командной строке.
  Разработать пакетный файл для архивации файлов в каталогах и подкаталогах (по отдельности в каждом каталоге) и удаления архивных файлов. Имена каталога и архиватора - в командной строке.
  Разработать пакетный файл для построения системы студенческих каталогов с запросом на создание каталогов требуемых курсов, групп и запросом максимального числа пользователей в группе. Номера курсов и шифры групп - в командной строке.
  Разработать пакетный файл для перехода студента в личный каталог. Группа выбирается из меню, курс передается в командной строке
  Разработать пакетный файл для установки даты и времени (параметры – в командной строке)
  Разработать пакетный файл для очистки студенческих каталогов: удаления файлов *.BAK, *.TMP и др. Номера очищаемых курсов передаются в командной строке.
  Разработать пакетный файл для вывода (на экран, файл, принтер) списка файлов из каталогов студентов. Шифр группы - из командной строки, направление вывода - из меню.
  Разработать пакетный файл для перехода в каталог студента, если он существует и его архивирования
  Разработать пакетный файл для вывода текстового файла на экран по страницам. Имя файла передается в командной строке.
  Разработать пакетный файл для перезаписи файлов документов (*.doc, *.txt) из одного каталога в другой с обновлением
  Разработать пакетный файл для копирования всех файлов документов (*.doc, *.txt) из всех студенческих подкаталогов в директорию «Мои документы»
  Разработать пакетный файл для проверки наличия файлов документов (*.doc, *.txt) в данном подкаталоге (имя – в параметрах). В случае положительного ответа – вывести их список

ЛИТЕРАТУРА

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с.

 

Лабораторная работа

«Перенаправление ввода/вывода.

Программирование командных BAT-файлов в Windows»



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 1212; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.139.81.58 (0.301 с.)