3. Подготовка к выполнению лабораторной работы

advertisement
-1Информатика
Лабораторная работа 1-054
Лабораторная работа № 1-04
Создание и модификация командных файлов
1. ЦЕЛЬ РАБОТЫ
Целью работы является приобретение навыков работы с командными файлами в
Windows, позволяющими выполнять последовательности команд.
2. СОСТАВ РАБОЧЕГО МЕСТА
2.1. Оборудование: IBM-совместимый персональный компьютер (ПК).
2.2. Программное обеспечение: операционная система Windows .
3. ПОДГОТОВКА К ВЫПОЛНЕНИЮ ЛАБОРАТОРНОЙ
РАБОТЫ
Для подготовки к выполнению лабораторной работы необходимо повторить
следующие разделы:
1. Пользовательский интерфейс командной строки Windows.
2. Командные файлы.
4. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
4.1. Командные файлы
Довольно часто в процессе работы с компьютером обнаруживается, что
необходимо повторять одни и те же команды (может быть, с небольшими изменениями)
для того, чтобы осуществить некоторые периодически выполняемые действия.
Операционная система Windows позволяет записать нужную для этого
последовательность команд в специальный файл, называемый командным файлом или
пакетным файлом (batch file).
Командный файл должен иметь расширение .bat. Командный файл выполняется
либо в окне приложения Командная строка подменю Стандартные пункта Все
программы в меню Пуск, либо в одной из командных оболочек (например, Far или Total
Commander).
Поскольку командный файл выполняется в режиме командной строки, он должен
быть задан в кодировке OEM (см. 2.1.15). Набор текста командного файла в этой
кодировке выполняется либо в текстовом редакторе Блокнот при задании в команде
Шрифт меню Формат шрифта Terminal, либо в любом другом редакторе,
поддерживающем кодировку OEM (например, редакторе Bred3).
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
-2Информатика
Лабораторная работа 1-054
4.2. Вызов командного файла
Последовательность команд, записанную в файле, можно выполнить, набрав имя
командного файла (расширение .bat при этом можно не указывать), а также параметры.
При вызове командного файла может быть задано до 9 параметров (число
параметров может быть увеличено при использовании команды shift). В самом
командном файле эти параметры обозначаются символами %1 - %9. При выполнении
командного файла эти символы будут заменены
значениями
параметров с
соответствующими номерами. Если в командной строке при вызове командного файла
задано меньше девяти параметров, то «лишние» символы из %1 - %9 замещаются пустыми
строками.
Если задаваемый параметр содержит пробел или пробелы, он должен быть
заключен в двойные кавычки (символ "), поскольку пробелы в команде вызова
командного файла используются для отделения параметров друг от друга.
Параметры при вызове команд могут отделяться между собой либо пробелами,
либо запятой (символ ","), либо точкой с запятой (символ ";").
Параметры не могут принимать следующих значений: &, | или символы ( и ).
Чтобы задать эти значения в качестве параметров, их необходимо либо заключить в
двойные кавычки, либо задать перед ними символ ^.
В командном файле можно использовать также символы %0, значение которых –
полный путь к командному файлу командного файла, а также символы %* – список
параметров командного файла.
Для выполнения командного файла операционная система вызывает команду cmd –
интерпретатор команд.
Если в командном файле символ % используется не для обозначения параметров, а
для других целей (например, как часть имени файла), то его надо набрать дважды. Так,
чтобы в командном файле указать файл XYZ%.COM, надо написать в строке командного
файла XYZ%%.СОМ.
С символами %0-%9 (%номер-параметра) можно также использовать следующие
основные модификаторы:
 %~номер-параметра
–
расширение
%номер-параметра
и
удаление
апострофов("");
 %~fномер-параметра – параметр рассматривается как имя файла и %номерпараметра заменяется полным путем к этому файлу;
 %~pномер-параметра – параметр рассматривается как имя файла и, если файл с
указанным именем существует, %номер-параметра заменяется путем к папке, в которой
находится этот файл;
 %~dномер-параметра – параметр рассматривается как имя файла и, если файл с
указанным именем существует, %номер-параметра заменяется именем диска, на котором
находится этот файл;
 %~nномер-параметра – параметр рассматривается как имя файла и, если файл с
указанным именем существует, %номер-параметра заменяется его именем (без указания
пути);
 %~xномер-параметра – параметр рассматривается как имя файла и, если файл с
указанным именем существует, %номер-параметра заменяется его расширением (с
предшествующим символом ".");
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
-3Информатика
Лабораторная работа 1-054
 %~tномер-параметра – параметр рассматривается как имя файла и, если файл с
указанным именем существует, %номер-параметра заменяется датой и временем
модификации файла;
 %~zномер-параметра – параметр рассматривается как имя файла и, если файл с
указанным именем существует, %номер-параметра заменяется значением размера файла
(в байтах);
 %~dpномер-параметра – параметр рассматривается как имя файла и, если файл
с указанным именем существует, %номер-параметра заменяется его именем и путем;
 %~nxномер-параметра – параметр рассматривается как имя файла и, если файл
с указанным именем существует,
%номер-параметра заменяется его именем и
расширением;
 %~ftzномер-параметра – параметр рассматривается как имя файла и, если
файл с указанным именем существует,
%номер-параметра заменяется его
характеристиками (аналогично выводу команды dir).
4.3. Команды, используемые в командных файлах
4.3.1. Команда echo и префикс @
Команда echo используется в двух случаях:
 для управления выводом строк файла;
 для вывода сообщений на экран дисплея.
Так, команда echo off отменяет вывод на экран следующих за ней команд, а
команда echo on – включает режим вывода выполняемых команд на экран. Команда
echo строка, где строка не символы "on" или "off" выводит указанную строку на
экран во время выполнения командного файла, даже если режим вывода на экран
выключен с помощью предыдущей команды echo off.
Префикс "@" в начале строки отменяет вывод на экран только данной строки.
4.3.2. Команда cls
Команда cls очищает экран дисплея. Эта команда задается без параметров.
4.3.3. Команда rem
Команда
rem строка
позволяет включать в командный файл комментарии для пояснения выполняемых в
командном файле действий. Кроме того, эту команду можно использовать, чтобы
отменить выполнение каких-либо команд по время выполнения командного файла.
4.3.4. Команда color
Команда color устанавливает цвет текста и фона окна вывода командного файла и
имеет следующий синтаксис
color фт
где ф – шестнадцатеричная цифра, задающая цвет фона, а т – шестнадцатеричная цифра,
задающая цвет текста.
Для цветов определены следующие значения:
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
-4Информатика
Лабораторная работа 1-054
Код
0
1
2
3
4
5
6
7
Цвет
Черный;
Синий;
Зеленый;
Голубой;
Красный;
Сиреневый;
Желтый;
Белый;
Код
8
9
A
B
C
D
E
F
Цвет
Серый;
Светло-синий;
Светло-зеленый;
Светло-голубой;
Светло-красный;
Светло-сиреневый;
Светло-желтый;
Ярко-белый.
Команда color без параметров восстанавливает цвета по умолчанию.
4.3.5. Команды pushd и popd
Команда
pushd имя-папки
сохраняет имя текущей папки и делает текущей папку с заданным именем (для этой
папки может быть указан как абсолютный, так и относительный путь).
Команда
popd
делает текущей папку, сохраненную командой pushd.
4.3.6. Метки и команда goto
Любая строка командного файла, начинающаяся с префикса ":", воспринимается
при обработке командного файла как метка. Имя метки определяется набором символов,
следующих за двоеточием до первого пробела или конца строки. Команда перехода
goto метка
осуществляет переход на заданную метку (метка может находиться как до, та и после
команды goto). Если метка в команде goto не указана, то выполнение командного
файла завершается.
4.3.7. Команда if
Команда условного перехода if, имеет формат:
if условие команда
Эта команда позволяет в зависимости от истинности или ложности заданного
условия соответственно выполнять или не выполнять указанную команду.
В качестве условия может использоваться одно из следующих выражений:
 errorlevel число – условие
истинно тогда, когда код завершения
предыдущей выполненной программы или команды больше заданного числа или равен
ему (код завершения устанавливается программами при окончании их работы, по
умолчанию этот код равен нулю);
 строка-1 == строка-2 – условие истинно тогда, когда строка-1 и строка-2
полностью совпадают. Если в этих строках имеются символы %0 - %9, то вместо этих
символов подставляются параметры командного файла;
 exist имя-файла – условие истинно тогда, когда указанный файл существует;
 not условие – истинно тогда, когда указанное условие ложно.
Команда – это любая допустимая команда (в том числе goto).
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
-5Информатика
Лабораторная работа 1-054
В Windows XP введена более удобная расширенная команда if, которая имеет
следующий синтаксис:
if [/i] условие (
команда-1-1
команда-1-2
…
) else (
команда-2-1
команда-2-2
…
)
Часть команды if, начиная с команды else, может быть пропущена.
В условии сравнения двух строк в расширенной команде if можно вместо
символов "==" использовать следующие трехсимвольные сокращения операций
сравнения:
 EQU – равно;
 NEQ – не равно;
 LSS – меньше;
 LEQ – меньше или равно;
 GTR – больше;
 GEQ – больше или равно.
Сравнение строк выполняется следующим образом: если все символы в строках
равны, строки считаются равными. Если код первый неравный символ первой строки,
больше, чем код первого неравного символа второй строки, то первая строка считается
больше, чем вторая. В противном случае первая строка меньше второй. Например, строка
abc меньше строки abd, но больше строки abb. Если обе строки состоят из цифр, то они
сравниваются как числа.
Сравнение строк выполняется без учета регистра букв (заглавные и строчные
буквы считаются одинаковыми). Для учета регистра букв необходимо задать опцию /i.
Для расширенной команды if могут быть также заданы дополнительные условия
cmdextversion и defined.
Условие
cmdextversion число
выполняется, только если номер внутренней версии, связанный с расширениями
командного процессора cmd.exe, равен или больше числа. Первая версия имела номер 1.
Номер версии увеличивается на 1 при внесении в расширения командного процессора
значительных изменений. Условие с cmdextversion не выполняется, если расширения
командного процессора запрещены (по умолчанию они разрешены).
Условие
defined переменная
выполняется, если переменная определена (обычно это переменная окружения).
4.3.8. Команда find
Команда find выполняет поиск заданной строки текста в файле или нескольких
файлах. Команда имеет следующий синтаксис:
find [/v] [/c] [/n] [/i] "строка-поиска" [[диск:][путь]имя-файла[...]]
Обязательный параметр "строка-поиска" задает последовательность символов,
для которой будет производиться поиск. Параметр [[диск:][путь]имя-файла[...]] задает
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
-6Информатика
Лабораторная работа 1-054
путь к файлу. Если этот параметр не указан, данные берутся из стандартного ввода
команды.
Опции команды find действуют следующим образом:
 /v – выводит все строки, не содержащие строку, заданную параметром
"строка-поиска" (если эта опция не задана, выводятся все строки, содержащие строку
"строка-поиска");
 /c – вывод количества строк, содержащих строку поиска;
 /n – вывод номеров строк перед строками;
 /i – поиск без различия строчных и заглавных букв.
4.3.9. Команда findstr
Команда findstr также выполняет поиск заданной строки текста в файле или
нескольких файлах, однако обладает большими возможностями по сравнению с командой
find.
Команда findstr имеет следующий синтаксис:
findstr [/b] [/e] [/l] [/r] [/s] [/i] [/x] [/v] [/n] [/m] [/o] [/p] [/offline]
[/g:файл] [/f:файл] [/c:строка] [/d:список-папок] [/a:атрибут-цвета] [строка]
[[диск:][путь] имя-файла [...]]
Параметр строка – задает строку (шаблон), поиск которой производится в файле,
заданном параметром [диск:][путь] имя-файла. Если параметр содержит пробелы, он
должен быть заключен в апострофы ("). Параметров [диск:][путь] имя-файла может быть
задано несколько (в этом случае поиск производится во всех заданных файлах.
Для команды findstr определены следующие опции:
 /b – сравнивает шаблон с началом строки;
 /e – сравнивает шаблон с концом строки.
 /r – использует строку поиска как регулярное выражение, в котором некоторые
символы интерпретирует как метасимволы (см. ниже);
 /l – использует строку поиска как обычную строку, т.е. строку, в которой
метасимволы интерпретируются как обычные символы;
 /s – задает поиск файлов в текущей папке и содержащихся в ней папках;
 /i – задает поиск без различия строчных и заглавных букв;
 /x – выводит в выходной поток точно совпавшие строки;
 /v – выводит в выходной поток строки, не содержащие совпадений;
 /n – выводит в начале совпавшей строки ее номер;
 /m – при обнаружении совпадения выводит только имя файла;
 /o – выводит смещение перед выводом строки с совпадением;
 /p – пропускает файлы с непечатаемыми символами (например, программные
файлы);
 /offline – обрабатывает файлы с атрибутом «автономный»;
 /f:файл – читает список из заданного файла;
 /c:строка – использует заданную строку как символьную строку поиска;
 /g:файл – получает строки поиска из заданного файла;
 /d:список-папок – выполняет поиск в списке папок, разделенных запятыми;
 /a:фт – задает атрибуты цвета: ф – для фона и т – для текста двумя
шестнадцатеричными цифрами (см. 4.3.4).
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
-7Информатика
Лабораторная работа 1-054
Метасимволы – это символы в шаблоне, имеющие специальное значение. В
команде findstr можно использовать следующие метасимволы:
 символ . – любой одиночный символ;
 символ * – предшествующий этому символу символ или класс может
повторяться 0 или более раз;
 символы .* – любая строка символов;
 символ ^ – поиск в начале строки;
 символ $ – поиск в конце строки;
 [класс] – любой символ из множества класс;
 [^класс] – любой символ, не заданный во множестве класс;
 [символ1-символ2] – любой символ в диапазоне от символ1 до символ2;
 \>строка – строка поиска, находящаяся в начале слова;
 строка\> – строка поиска, находящаяся в конце слова;
 \метасимвол – метасимвол (., *, ^, $, [ или \) трактуется как обычный символ.
В строке поиска можно задать несколько строк, разделенных пробелами. В этом
случае достаточно, чтобы хотя бы одна из этих строк присутствовала в просматриваемой
строке. Однако, если строка поиска задана в опции /c, то выполняется поиск на
совпадение всех символов строки.
4.3.10. Команда sort
Команда sort сортирует поступающие на ее вход данные и имеет следующий
синтаксис:
sort [/r] [/+индекс] [/m килобайты] [/l язык] [/rec символы]
[[диск1:][путь1]имя-файла1] [/t [диск2:][путь2]]
[/o [диск3:][путь3]имя-файла3]
Параметр [диск1:][путь1]имя-файла1 задает сортируемый файл. Если этот
параметр не задан, сортируется стандартный ввод.
Параметр [/t [диск2:][путь2]] задает каталог для хранения рабочих данных
команды sort, если сортируемые данные не помещаются в основной памяти (по
умолчанию используется системный временный каталог).
Параметр /o
[диск3:][путь3]имя-файла3 задает файл для хранения
отсортированного ввода (если параметр не указан, данные будут записываться в
стандартный вывод).
Для команды sort определены следующие опции:
 /r – изменяет порядок сортировки по уменьшению, т.е. от Z к A, затем от 9 к 0;
 /+индекс – задает номер позиции символа индекс, начиная с которой будет
выполняться сравнение (по умолчанию сравнение начинается с первого символа в строке,
т.е. значение индекса по умолчанию равно 1);
 /m килобайты – задает количество основной памяти, используемой для
сортировки (в килобайтах);
 /l язык – переопределяет порядок сортировки символов, задаваемый языком,
который используется системой по умолчанию, т. е. языком и страной/регионом,
выбранными при установке (в настоящее время единственно допустимое значение
параметра язык – C, когда
сортировка символов производится по их двоичной
кодировке);
 /rec символы – задает максимальное числа символов в записи (или строке)
входного файла (значение по умолчанию равно 4096, максимальное значение — 65535).
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
-8Информатика
Лабораторная работа 1-054
При сортировке регистр букв не учитывается, т.е. строчные и заглавные буквы,
например, А и а, считаются одинаковыми символами.
4.3.11. Команда for
Команда for выполняет некоторую команду или последовательность команд для
каждого файла из заданного множества.
Команда имеет следующий синтаксис:
for переменная in (множество) do команда
Переменная обычно используется в команде и при выполнении команды
последовательно принимает имена файлов из заданного множества. Если переменная
задается вне командного файла, она должна начинаться с символа %, если внутри
командного файла – должна начинаться с символов %%.
Множество задает один или несколько файлов, каталогов, диапазон значений или
текстовых строк, подлежащих обработке заданной командой. Элементы множества
отделяются друг от друга пробелами.
Команда
это
отдельная
команда
или
последовательность
команд.
Последовательность команд должна быть задана, как это описано в 2.1.14.3.
В командах или последовательностях команд для переменных можно задавать те
же модификаторы, что определены для параметров вызова командного файла (см. 4.1).
Следует отметить, что все компоненты команды for, включая команды после
оператора do, должны задаваться в одной строке.
Первая расширенная форма команды for:
for /D переменная in (множество) do команда
позволяет задать во множестве не имена файлов, а имена папок, т.е. цикл будет
выполняться по заданному множеству имен папок.
Вторая расширенная форма команды:
for /R [[диск:]путь] переменная in (множество) do команда
проходит по дереву папок с корнем в [диск:]путь, выполняя команду for для каждой
папки в дереве. Если папка после опции /R не задана, предполагается текущая папка.
Если параметр множество задан одной точкой (.), то команда просто выводит список
папок в дереве.
Третья расширенная форма команды for:
for /L переменная in (начальное-значение, шаг, конечное-значение)
do команда
выполняет цикл по заданному диапазону целых чисел начального-значения от до
конечного-значения с приращением (положительным или отрицательным целым числом),
заданным в параметре шаг.
Последняя расширенная форма команды for может быть задана в одном из трех
вариантов:
for /F ["параметры-разбора"] переменная in (множество) do команда
for /F ["параметры-разбора"] переменная in ("строка") do команда
for /F ["параметры-разбора"] переменная in ('команда') do команда
Эти варианты расширения разбивают текст файла в параметре множество, либо
строку в параметре "строка", либо вывод команды в параметре 'команда' на отдельные
смысловые элементы – лексемы. Разделителями между лексемами являются один или
несколько символов-ограничителей. Параметры-разбора содержат список параметров,
отделенных друг от друга пробелом или пробелами.
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
-9Информатика
Лабораторная работа 1-054
Лексемы образуют последовательность. С каждым из элементов этой
последовательности можно связать свой индекс. Первый индекс, например, %%I задается
как значения переменной в команде for. Остальные лексемы будут доступны с индексами
%%J (вторая лексема), %%K (третья лексема) и т.д. По умолчанию для анализа доступна
только первая лексема. Чтобы сделать остальные лексемы доступными для анализа,
необходимо в параметрах-разбора задать ключевой параметр
tokens=список
Список задает номера лексем, доступные для анализа, либо в виде списка номеров
лексем, отделенных друг от друга запятыми (например, 1,2,3), либо в виде диапазона
значений (например, 1-4). Если в конце списка задан символ "*", то создается
дополнительная переменная, Значением которой будут все оставшиеся лексемы.
Например, если задан параметр
tokens=1,2*,
то в качестве значения переменной %%I будет доступна первая лексема, в качестве
значения переменной %%J – вторая лексема и в качестве значения переменной %%K –
третья и последующая лексема.
По умолчанию символами-разделителями между лексемами являются пробел и
символ табуляции. Чтобы задать свои символы-разделители, необходимо в параметрахразбора задать ключевой параметр
delims=символы
Так, чтобы задать в качестве символов-разделителей запятую, точку с запятой и
точку, необходимо задать следующий параметр:
delims=,;.
Если необходимо задать в качестве символа-разделителя пробел, параметр должен
быть последним в списке параметров-разбора, а символ пробела – последним в списке
символов-разделителей, например:
"tokens=1,2* delims=,;. ".
Ключевой параметр
skip=число
в списке параметров-разбора задает количество строк, пропускаемых без анализа в
начале файла, а параметр
eol=символ
позволяет исключить из анализа строку, первым символом которой является заданный
символ.
Последний параметр в списке параметров-разбора:
usebackq,
задаваемый без значения позволяет использовать следующие варианты записи команды
for, отличающиеся от приведенных выше ограничителями параметра в круглых скобках:
for /F ["usebackq параметры-разбора"] переменная
in ("множество") do команда
for /F ["usebackq параметры-разбора"] переменная
in ('строка') do команда
for /F ["usebackq параметры-разбора"] переменная
in (`команда`) do команда
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
- 10 Информатика
Лабораторная работа 1-054
4.3.12. Команда set
Команда set задает, удаляет и просматривает переменные окружения, а также
позволяет вводить строковые переменные, задавать числовые переменные и выполнять
операции над ними.
Для просмотра установленных переменных окружения и их значений
используется команда set без параметров.
Для задания переменной окружения используется следующая форма команды
set:
set имя-переменной=значение
Если переменной с заданным именем нет в списке переменных окружения,
переменная будет добавлена в список и получит заданное значение, Если переменная уже
существует, ее значение будет изменено.
Если в командном файле употребить имя переменной окружения, заключенное с
обеих сторон в знаки процента (%), то оно будет заменено значением этой переменной.
Для удаления переменной окружения используется следующая форма команды
set:
set имя-переменной=
Помимо задаваемых пользователем переменных окружения, в командных файлах
можно использовать значения системных переменных окружения, основными из которых
являются:
 %CD% – возвращает путь к текущей папке;
 %DATE% и %TIME% – возвращают текущую дату и время;
 %ERRORLEVEL% – возвращает код ошибки последней использовавшейся
команды;
 %OS% – возвращает имя операционной системы;
 %PATH% – возвращает пути поиска исполняемых файлов (программ);
 %PROMPT% – возвращает параметры командной строки для текущего
интерпретатора;
 %RANDOM% – возвращает десятичное целое случайное число в диапазоне от 0 до
32767;
 %SYSTEMDRIVE% – возвращает имя диска, содержащего корневой каталог
Windows;
 %SYSTEMROOT% – возвращает путь к системному каталогу Windows;
 %USERNAME% – возвращает имя пользователя.
Для ввода строки используется форма команды set с опцией /p:
set /p имя-переменной=
Эта команда приостанавливает выполнение командного файла и ожидает ввода
строки с клавиатуры и нажатия клавиши Enter. После этого значение введенной строки
присваивается переменной с заданным именем.
Для операций над числовыми выражениями используется форма команды set
с опцией /a:
set /a выражение
В выражении могут быть заданы следующие арифметические и логические
операции:
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
- 11 Информатика
Лабораторная работа 1-054
 +, -, * и / – арифметические операции сложения, вычитания, умножения и
деления;
 % – операция определения остатка от деления двух целых чисел;
 число<<сдвиг – число рассматривается как представленное в двоичном виде и
его биты сдвигаются влево на количество позиций, указанных в параметре сдвиг
(освободившиеся биты заполняются нулями);
 число>>сдвиг – число рассматривается как представленное в двоичном виде и
его биты сдвигаются вправо на количество позиций, указанных в параметре сдвиг
(освободившиеся биты заполняются нулями);
 число1 & число2 – число1 и число2 рассматриваются как представленные в
двоичном виде и над их битами выполняется поразрядное логическое умножение –
операция И (соответствующий разряд результата будет равен 1 только тогда, когда оба
бита разряда числа1 и числа2 равны 1, в остальных случаях бит равен 0);
 число1 | число2 – число1 и число2 рассматриваются как представленные в
двоичном виде и над их битами выполняется поразрядное логическое сложение –
операция ИЛИ (соответствующий разряд результата будет равен 0 только тогда, когда оба
бита разряда числа1 и числа2 равны 0, в остальных случаях бит равен 1);
 число1 ^ число2 – число1 и число2 рассматриваются как представленные в
двоичном виде и над их битами выполняется операция исключающее ИЛИ
(соответствующий разряд результата будет равен 1 только тогда, когда оба бита разряда
числа1 и числа2 не равны друг другу, в остальных случаях бит равен 0);
 = – операция присваивания;
 *=, /=, %=, +=, -=, &=, ^=, |=, <<= и >>= – составные операции присваивания
(например, составная операция присваивания x+=3 эквивалентна простой операции
присваивания x=x+3);
 , – разделение выражения;
 < > – группировка выражения.
4.3.13. Команды setlocal и endlocal
Команда setlocal устанавливает режим при котором все операции над
переменными окружения, строковыми или числовыми данными выполняются в локальной
области данного командного файла. Этот режим действует, пока в командном файле не
встретится команда endlocal, отменяющая локальный режим, либо пока не будет
достигнут конец командного файла. В этом случае, если в командном файле было
изменено значение какой-либо переменной окружения, то после окончания выполнения
файла будет действительным старое значение переменной. Если же в командном файле
определены новые переменные окружения, то после выполнения командного файла они
будут удалены.
4.3.14. Команда call
В командном файле можно вызвать другой командный файл, просто указав его имя
(и, если надо, параметры). Но после окончания работы вызванного файла выполнение
исходного командного файла продолжено не будет. Поэтому если требуется из одного
командного файла вызвать выполнение другого командного файла, а затем продолжить
выполнение исходного командного файла, то это можно сделать командой вызова call,
имеющей следующий формат:
call имя-командного-файла параметры
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
- 12 Информатика
Лабораторная работа 1-054
4.3.15. Команда start
Команда start запускает программу или команду в отдельном окне и имеет
следующий синтаксис:
start ["заголовок"] [/dпуть] [/i] [/min] [/max] [{/separate | /shared}]
[{/low | /normal | /high | /realtime | /abovenormal | belownormal}]
[/wait] [/b] [имя-файла] [параметры]
Параметр "заголовок" задает текст в строке заголовка открывающегося окна.
Параметр имя-файла задает имя запускаемой команды или программы с заданными
параметрами. Если параметр имя-файла не задан, просто открывается новой окно
командной строки.
Для команды start определены следующие опции:
 /dпуть указывает папку запуска команды или программы;
 /i – передает начальные установки среды интерпретатора cmd.exe в новое
окно командной строки;
 /min и /max – запускает новое окно командной строки соответственно в
свернутом и развернутом виде;
 /separate и /shared – запускает 16-битные программы соответственно в
отдельном или общем пространстве памяти;
 /low, /normal, /high, /realtime, /abovenormal и belownormal –
запускает приложение соответственно с низким приоритетом, с нормальным приоритетом,
с высоким приоритетом, с приоритетом реального времени, с приоритетом выше среднего
и с приоритетом ниже среднего;
 /wait – запускает приложение с ожиданием окончания его работы;
 /b – запускает приложение без открытия нового окна командной строки
(обработка комбинации клавиш Ctrl+C не производится, пока приложение не разрешит
обработку Ctrl+C, а для прерывания приложения следует использовать Ctrl+Break).
Команда start без параметров просто открывает новое окно командной строки.
4.3.16. Команда cmd
Команда cmd запускает новую копию интерпретатора команд и имеет следующий
синтаксис:
cmd [[{/c|/k}] [/s] [/q] [/d] [{/a|/u}]
[/t:тф] [/e:{on|off}] [/f:{on|off}] [/v:{on|off}] команда]
Для команды cmd определены следующие опции:
 /c и /k – выполнение команды, заданной параметром команда, соответственно
с завершением и продолжением работы
 /s – изменение обработки команды после параметров /c или /k;
 /q – выключение режима вывода команд на экран;
 /d – отключение выполнения команд AutoRun;
 /a и /u – вывод сведений соответственно в формате ANSI или в кодировке
Unicode;
 /t:фт – изменение цвета текста т и фона ф (см. 2.1.14.2.4);
 /e:on и /e:off – включение или отключение расширений командного
процессора;
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
- 13 Информатика
Лабораторная работа 1-054
 /f:on и /f:off – включение или отключение завершения имен файлов и
папок;
 /v:on и /v:off – включение или отключение отложенного расширения
переменных среды.
4.3.17. Команда pause
Команда паузы pause позволяет приостановить выполнение командного файла
(например, для того, чтобы можно было поставить нужную дискету). При выполнении
этой команды на экран выводится сообщение:
Для продолжения нажмите любую клавишу . . .
Выполнение командного файла при этом приостанавливается. Если нажать любую
алфавитно-цифровую клавишу, Пробел или Enter, выполнение командного файла будет
продолжено.
4.4. Последовательности команд
В одной командной строке могут быть заданы несколько команд, т.е.
последовательность команд. Команды в последовательности задаются следующим
образом:
 команда-1 & команда-2 – команда-2 выполняется после команды-1;
 команда-1 && команда-2 – команда-2 выполняется после команды-1 только в
том случае, если команда-1 завершилась успешно (с нулевым кодом);
 команда-1 || команда-2 – команда-2 выполняется после команды-1 только в
том случае, если команда-1 завершилась с ошибкой (с ненулевым кодом);
 (команда-1 & команда-2) – объединение команды-1 и команды-2 в группу.
4.5. Пример командного файла
Командный файл viewer.bat выводит содержимое текстовых файлов в окне
редактора Блокнот, а содержимое командных файлов (с расширением .bat) – с
помощью команды edit (выход из редактора Блокнот и команды edit выполняется с
помощью команды Выход меню Файл).
В качестве первого (обязательного) параметра должно быть задано имя папки (для
текущей папки задается символ ".").
Вторым (необязательным) параметром является тип файла:
 bat – для командных файлов (с расширением .bat);
 text – для текстовых файлов (с расширением .txt);
 all – для всех файлов.
Если второй параметр не задан, для него предполагается значение all.
В начале выполнения командного файла выводится запрос на ввод строки поиска в
файлах. В ответ на этот запрос вводится значение строки поиска или пустая строка. В
первом случае в окне редактора Блокнот или команды edit выводится наименование
файла, и только те строки файла, которые содержат строку поиска. Если строк поиска в
файле не обнаружено, выводится соответствующее сообщение. Во втором случае
выводится все содержимое файла. После вывода строк поиска или содержимого файла
выводится количество командных и/или текстовых файлов в папке.
Просмотр файлов заданных типов выполняется с помощью команды for.
При значении /? для первого параметра должна выводиться справка о командном
файле: действие, вызов и пояснения к параметрам.
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
- 14 Информатика
Лабораторная работа 1-054
Ниже следует текст командного файла с пояснениями.
В начале командного файла можно вывести заголовок-пояснение:
@echo off
echo *****************************************
echo * Просмотр текстовых и командных файлов *
echo *****************************************
Строки командного файла, проверяющие задание первого параметра,
записываются следующим образом:
rem Проверка первого параметра
if %1- EQU - (
rem Вывод сообщения об ошибке
echo Не задан первый параметр.
echo Для вывода справки введите viewer /?
rem Окончание выполнения командного файла
goto exit
)
Для вывода справки по командному файлу используется следующая
последовательность команд:
rem Вывод справки
if -%1- EQU -/?- (
echo Командный файл viewer.bat выводит содержимое
echo файлов в папке в окне текстового
echo редактора Блокнот для файлов с расширением .txt
echo или команды edit для файлов с расширением .bat
echo Вызов: viewer имя-папки [тип-файла]
echo Если для имени-папки вводится символ .,
echo то выводится оглавление текущей папки
echo Параметр тип-файла может иметь следующие значения:
echo
bat
- командные файлы
echo
text - текстовые файлы
echo
all
- все файлы
echo Если тип-файла не задан, предполагается
echo значение all
echo В начале выполнения файла вводится строка поиска
echo или пустая строка – для отмены поиска в файлах
goto exit
)
Следующими шагами являются установка локального режима изменений
переменных окружения и переход в папку, заданную в первом параметре с проверкой
существования этой папки:
rem Установка локального режима
rem изменений переменных окружения
setlocal
rem Переход в папку, определенную первым параметром
if %1 NEQ . (
pushd %1
)
rem Если при выполнении команды произошла ошибка
if errorlevel 1 (
rem Вывод сообщения
echo Папка %1 не существует
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
- 15 Информатика
Лабораторная работа 1-054
rem Окончание выполнения командного файла
goto exit
)
Команда pushd запоминает текущую папку и переходит в папку, заданную в
первом параметре. Если такой папки не существует, команда завершается с ненулевым
кодом. В этом случае выводится сообщение об ошибке и происходит переход на метку
exit.
Ввод строки поиска выполняется с помощью следующих команд:
rem
====== Ввод строки поиска ======
echo Введите строку поиска или пустую строку:
rem Ожидание и ввод строки поиска
set /p search_string=
Затем задаются два переключателя, определяющие вывод соответственно
текстовых и командных файлов (значение yes – вывод файлов выполняется, значение no
– не выполняется). Первоначально оба переключателя устанавливаются в yes:
rem
====== Проверка второго параметра ======
rem Установка вывода командных файлов в yes
set bat_output=yes
rem Установка вывода текстовых файлов в yes
set text_output=yes
Если значение второго параметра не задано или равно all, состояние
переключателей не изменяется и выполняется переход к метке files_output:
rem Если второй параметр не задан
if -%2 EQU - (
rem Вывод файлов
goto files_output
)
rem Если второй параметр равен all
if %2 EQU all (
rem Вывод файлов
goto files_output
)
Если значение второго параметра равно bat, переключатель вывода текстовых
файлов устанавливается в no и выполняется переход к метке files_output:
rem Если второй параметр равен bat
if %2 EQU bat (
rem Установка вывода текстовых файлов в no
set text_output=no
rem Вывод файлов
goto files_output
)
Если значение второго параметра равно text, переключатель вывода командных
файлов устанавливается в no и выполняется переход к метке files_output:
rem Если второй параметр равен text
if %2 EQU text (
rem Установка вывода командных файлов в no
set bat_output=no
rem Вывод файлов
goto files_output
)
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
- 16 Информатика
Лабораторная работа 1-054
Если значение второго параметра задано, но не равно не all, не bat и не text,
т.е. является ошибочным, для обработки ошибки задаются следующие команды:
rem
====== Ошибка во втором параметре ======
echo Неверное значение %2 второго параметра.
echo Для вывода справки введите viewer /?.
goto dir_restore
Далее выполняется вывод файлов, но сначала подсчитывается количество
текстовых и командных файлов в папке с помощью следующих команд:
rem
====== Вывод файлов ======
:files_output
rem Задание начального значения
rem количества текстовых файлов в папке
set /a text_сount=0
rem Определение количества текстовых файлов
for %%f in (*.txt) do set /a text_сount+=1
rem Задание начального значения
rem количества командных файлов в папке
set /a bat_count=0
rem Определение количества командных файлов
for %%f in (*.bat) do set /a bat_count+=1
Вывод строк в текстовых файлах или текстовых файлов выполняется с помощью
следующих команд:
rem Если есть вывод текстовых файлов
if %text_output% EQU yes (
rem Если есть текстовые файлы
if "%text_count%" NEQ "0" (
rem Если строка поиска - не пустая
if -%search_string% NEQ - (
rem Если строка найдена, запись
rem найденных строк во временный
rem файл и вывод найденных строк в
rem редакторе Блокнот, иначе
rem сообщение о том, что строка
rem в файле не найдена
for %%f in (*.txt) do
find %%f "%search_string%" >
temp$$$$.txt &&
(echo Вывод строк файла %%f &
C:\WINDOWS\Notepad.exe temp$$$$.txt &
erase temp$$$$.txt) ||
echo Файл %%f: нет строки поиска
) else (
rem Вывод содержимого файлов
rem в редакторе Блокнот
for %%f in (*.txt) do
echo Вывод файла %%f &
C:\WINDOWS\Notepad.exe %%f
)
rem Вывод количества текстовых файлов
echo Текстовых файлов в папке '%CD%':
%text_сount%
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
- 17 Информатика
Лабораторная работа 1-054
) else (
rem Вывод сообщения об отсутствии
rem текстовых файлов
echo В папке %CD% нет текстовых файлов
)
)
Аналогично выполняется вывод командных файлов:
rem Если есть вывод командных файлов
if %bat_output% EQU yes (
rem Если есть командные файлы
if "%bat_count%" NEQ "0" (
rem Если строка поиска - не пустая
if -%search_string% NEQ - (
rem Если строка найдена, запись
rem найденных строк во временный
rem файл и вывод найденных строк с
rem помощью команды edit, иначе
rem сообщение о том, что строка
rem в файле не найдена
for %%f in (*.bat) do
find %%f "%search_string%" >
temp$$$$.txt &&
(echo Вывод строк файла %%f &
edit temp$$$$.txt &
erase temp$$$$.txt) ||
echo Файл %%f: нет строки поиска
) else (
rem Вывод содержимого файлов
rem с помощью команды edit
for %%f in (*.bat) do
echo Вывод файла %%f & edit %%f
)
rem Вывод количества текстовых файлов
echo Командных файлов в папке '%CD%':
%bat_сount%
) else (
rem Вывод сообщения об отсутствии
rem текстовых файлов
echo В папке %CD% нет командных файлов
)
)
Далее выполняется проверка существования временного файла и его удаление:
rem Если временный файл существует
if exist temp$$$$.txt (
rem Удаление временного файла
erase temp$$$$.txt
)
И, наконец, последние команды файла восстанавливают текущую папку и
отменяют локальный режим для переменных окружения:
:dir_restore
rem Если каталог - не текущий каталог
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
- 18 Информатика
Лабораторная работа 1-054
if %1 NEQ . (
rem Восстановление текущего каталога
popd
)
:exit
rem Отмена локального режима изменений
rem переменных окружения
endlocal
Пример вызова и вывода этого командного файла:
D:\Командные файлы>viewer.bat .
******************************************
* Просмотр текстовых и командных файлов *
******************************************
Введите строку поиска или пустую строку:
var2
Вывод строк файла dircontANSI.txt
Вывод строк файла dircontUTF-16.txt
Вывод строк файла dircont.txt
Файл dir2.txt: нет строки поиска
Файл dir1.txt: нет строки поиска
Текстовых файлов в папке 'D:\Командные файлы': 5
Вывод строк файла test.bat
Файл testset.bat: нет строки поиска
Файл testecho.bat: нет строки поиска
Файл viewer.bat: нет строки поиска
Командных файлов в папке 'D:\Командные файлы': 4
5. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1.
Составьте командный файл в соответствии со своим вариантом:
2.
Откройте свою папку и создайте в ней папку temp.
3.
Скопируйте в папку temp несколько файлов с нужными при выполнении
вашего варианта расширениями (например, .txt, .doc, .exe и т.д.).
4.
Создайте (с помощью команды copy con имя-файла) файл со своим именем
и расширением .bat.
5.
Текстовый файл должен быть в кодировке OEM (DOS). Его можно
редактировать либо во встроенном редакторе Far (в режиме DOS), либо в текстовом
редакторе Блокнот (со шрифтом Terminal), либо в редакторе Bred3 (в кодировке OEM).
6.
Для всех вариантов при значении /? для первого параметра должна
выводиться справка о командном файле: действие, вызов и пояснения к параметрам.
7.
Для всех вариантов в командном файле должна выполняться проверка
параметров:
 если параметр является обязательным, производится проверка его
задания;
 если параметр – файл или папка, выполняется проверка их
существования;
 если параметр может иметь только определенное значение или значения,
выполняется проверка каждого значения и, если параметр имеет недопустимое
значение, должно выводиться сообщение об ошибке.
8.
Последующие действия выполняются в соответствии с вашим вариантом.
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
- 19 Информатика
Лабораторная работа 1-054
9.
Создайте новый файл в текстовом редакторе Блокнот для записи результатов
работы командного файла.
10. После создания командного файла проверьте его работу при всех возможных
значениях параметров и скопируйте результаты выполнения с экрана системного
приложения Командная строка или командной оболочки Far в окно текстового
редактора.
11. Покажите преподавателю работу вашего командного файла для всех
возможных значений параметров.
12. Сохраните файл, содержащий командный файл, и файл, содержащий
результаты работы командного файла, на дискету или флэш-карту, а затем удалите папку
temp.
Вариант 5-01
Создайте командный файл вывода имен и характеристик файлов (с помощью
команды dir) заданных типов или с заданным именем из заданной папки.
В качестве первого (обязательного) параметра должно быть задано имя папки (для
текущей папки задается символ "."). Вторым (необязательным) параметром является тип
файла:
 prog – для программных файлов (с расширениями .com и .exe);
 bat – для командных файлов (с расширением .bat);
 text – для текстовых файлов (с расширениями .doc и .txt);
 all – для всех файлов.
Если второй параметр не задан, выдается запрос на ввод имени файла, для которого
будут выводиться характеристики (в имени файла можно использовать символы * и ?).
Для значений параметров prog, bat или text должно быть выведено общее
количество файлов соответствующего типа в папке (программных, командных или
текстовых).
Вариант 5-02
Создайте командный файл, выводящий оглавление папки (полученное с помощью
команды dir) на экран дисплея, в заданный файл или на печать.
В качестве первого (обязательного) параметра должно быть задано имя папки (для
текущей папки задается символ "."). Вторым (необязательным) параметром является вид
выводного потока:
 d – вывод на дисплей;
 f – вывод в заданный в качестве третьего параметра файл в папке, заданной в
первом параметре;
 p – вывод на печать.
Если второй параметр не задан, для него предполагается значение d.
Если значение второго параметра равно f, выдается запрос на ввод имени файла, в
который будет выводиться оглавление папки.
Вариант 5-03
Создайте командный файл копирования файлов заданного типа (с помощью
команды copy) из одной папки в другую.
В качестве первого (обязательного) параметра должно быть задано имя исходной
папки (для текущей папки задается символ "."). Вторым (необязательным) параметром
является тип файла:
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
- 20 Информатика
Лабораторная работа 1-054
 image – для файлов изображений (с расширениями .bmp , .gif, .jpg и
.png);
 prog – для программных файлов (с расширениями .com и .exe);
 text – для текстовых файлов (с расширениями .doc и .txt);
 all – для всех файлов.
Если второй параметр не задан, для него предполагается значение all.
В командном файле выдается запрос на ввод имени папки, в которую будут
копироваться файлы (для текущей папки задается символ "."). Имена исходной папки и
папки, в которую будет производиться копирование, не должны совпадать. Если папка с
заданным именем не существует, она создается с помощью команды mkdir.
Для значений параметров image, prog или text должно быть выведено общее
количество скопированных файлов соответствующего типа (изображений, программных
или текстовых).
Вариант 5-04
Создайте командный файл, выводящий характеристики файлов заданного типа в
заданной папке, либо в родительской папке заданной папки, либо в одной из дочерних
папок заданной папки.
В качестве первого (обязательного) параметра должно быть задано имя папки (для
текущей папки задается символ "."). Вторым (необязательным) параметром является тип
файла:
 image – для файлов изображений (с расширениями .bmp , .gif, .jpg и
.png);
 doc – для файлов Word (с расширением .doc);
 text – для текстовых файлов (с расширением .txt);
 prog – для программных файлов и командных файлов (с расширениями .com ,
.bat и .exe).
Если второй параметр не задан, выводятся характеристики всех файлов.
Если в папке есть дочерние папки, выводится список этих папок (с помощью
команды dir /a:d /b), иначе выводится сообщение «В папке имя-папки нет
папок». После этого выводится запрос на ввод папки, для которой будут выводиться
характеристики файлов. В качестве ответа на запрос можно задать либо имя одной из
дочерних папок, либо символ "." (для вывода характеристик файлов в заданной папке),
либо символы ".." (для вывода характеристик файлов в родительской папке заданной
папки). Если в ответ на запрос введена пустая строка, выполнение файла прекращается.
Вариант 5-05
Создайте командный файл, выполняющий вывод списка временных файлов с
заданным расширением файла в папке с именем имя-папки, а также может удалять
временные файлы с заданным именем.
В качестве первого (обязательного) параметра должно быть задано имя папки (для
текущей папки задается символ "."). Вторым (необязательным) параметром является
расширение файла:
 bak – для временных файлов с расширением .bak;
 tmp – для временных файлов с расширением .tmp.
Если второй параметр не задан, выводится список всех временных файлов (с
расширениями .bak и .tmp).
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
- 21 Информатика
Лабораторная работа 1-054
Если временные файлы в папке не найдены, выполнение командного файла
заканчивается и выдается сообщение «В папке имя-папки нет временных
файлов», в противном случае выдается список временных файлов (с помощью цепочки
команд dir и findstr) и количество временных файлов в папке заданного типа в папке
или общее количество временных файлов.
После вывода списка выдается запрос на возможность удаления временного файла
или файлов. Если ответ на запрос n, выполнение командного файла заканчивается. Если
ответ y, выводится запрос на ввод имени удаляемого файла (без расширения). Если для
значения второго параметра bak существует файл с заданным именем и расширением
.bak, он удаляется. Аналогично для значения второго параметра tmp удаляется файл с
заданным именем и расширением .tmp. Если второй параметр не задан, удаляется файл с
заданным именем и расширением .bak и/или .tmp.
Если задано удаление временных файлов, то после его окончания должно быть
выведено сообщение «Удален файл/файлы с именем имя-файла».
Вариант 5-06
Создайте командный файл, выполняющий проверку наличия файлов с заданным
расширением (например, doc или txt) в заданной папке с помощью условия exist в
команде if.
В качестве первого (обязательного) параметра должно быть задано имя папки (для
текущей папки задается символ "."). Вторым (необязательным) параметром является
опция /erase. Если она задана, файлы с заданным расширением (если они есть)
удаляются из папки.
В начале выполнения выдается запрос на ввод расширения файла (без первого
символа ".").
Если файлы с заданным расширением в папке не найдены, выполнение командного
файла заканчивается и выдается сообщение «В папке имя-папки нет файлов с
расширением расширение», в противном случае выдается список файлов с заданным
расширением (с помощью цепочки команд dir и findstr), а также общее количество
файлов в папке с заданным расширением. Если задано удаление файлов с заданным
расширением, то после его окончания должно быть выведено сообщение «Файлы с
расширением расширение в папке имя-папки удалены».
Вариант 5-07
Создайте командный файл, выполняющий проверку наличия файла с заданным
именем (например, a1) в заданной папке с помощью условия exist в команде if и
определение типа файла.
В качестве первого (обязательного) параметра должно быть задано имя папки (для
текущей папки задается символ "."). Вторым (необязательным) параметром является
опция /chars. Если она задана, на экран выводятся характеристики файла.
В начале выполнения выдается запрос на ввод имени файла (без последнего
символа "." и расширения).
Если файл с заданным именем в папке не найден, выполнение командного файла
заканчивается и выдается сообщение «В папке имя-папки нет файла с именем
имя-файла», в противном случае выдается «Файл с именем имя-файла: имя-типа»,
где имя-типа может иметь одно из следующих значений:
 программа – для файлов с расширением .com или .exe;
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
- 22 Информатика
Лабораторная работа 1-054
 командный файл – для файлов с расширением .bat;
 изображение – для файлов с расширениями .bmp , .gif, .jpg или .png;
 текстовый – для файлов с расширениями .txt или .doc);
 тип неизвестен – для файлов с остальными расширениями.
Вывод характеристик файла выполняется с помощью цепочки команд dir и
findstr. Предполагается, что в папке есть только один файл с заданным именем.
Вариант 5-08
Создайте командный файл, выводящий количество строк в файлах, содержащие
заданные строки поиска (с помощью команды find с параметром /c) для текстовых
файлов заданного типа в заданной папке. Файлы в папке просматриваются с помощью
команды for.
В качестве первого (обязательного) параметра должно быть задано имя папки (для
текущей папки задается символ "."). Вторым (необязательным) параметром является тип
файла:
 text – для текстовых файлов (с расширением .txt);
 bat – для командных файлов (с расширением .bat);
 all – для всех текстовых файлов (с расширениями .txt и.bat).
Если второй параметр не задан, выдается запрос на ввод имени файла (в имени
файла могут быть использованы символы "?" и "*") и запрос на ввод расширения файла
(должно быть одно из перечисленных выше расширений).
Строка поиска в файлах задается с помощью запроса.
Если файлов указанного типа нет в папке, выводится сообщение «В папке имяпапки нет файлов типа имя-типа».
Если заданная подстрока не найдена в файле, выдается сообщение «В файле имяфайла нет строк, содержащих строку "подстрока-поиска"», в противном
случае выдается количество строк, содержащих строку поиска.
Для значения параметра text в конце должно быть выведено общее количество
текстовых файлов в папке, для значения параметра bat – общее количество командных
файлов в папке, а для значения параметра all – общее количество текстовых и
командных файлов в папке.
Вариант 5-09
Создайте командный файл, выполняющий просмотр файлов папки в соответствии с
их типом.
В качестве первого (обязательного) параметра должно быть задано имя папки (для
текущей папки задается символ "."). Вторым (необязательным) параметром является тип
файла, который может иметь одно из следующих значений:
 image – для файлов изображений с расширениями .bmp, .gif, .jpg или
.png (вызывается программа C:\WINDOWS\system32\mspaint.exe);
 bat – для командных файлов с расширением .bat (вызывается команда
edit);
 text – для текстовых файлов с расширением .txt (вызывается программа
C:\WINDOWS\Notepad.exe).
Если второй параметр не задан, выдается запрос на ввод имени файла (в имени
файла могут быть использованы символы "?" и "*") и запрос на ввод расширения файла
(должно быть одно из перечисленных выше расширений).
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
- 23 Информатика
Лабораторная работа 1-054
Для значения параметра image в конце должно быть выведено общее количество
файлов изображений в папке, для значения параметра bat в конце должно быть выведено
общее количество командных файлов в папке, для значения параметра text – общее
количество текстовых файлов в папке, а для значения параметра all – общее количество
файлов изображений, текстовых и командных файлов в папке.
Вариант 5-10
Создайте командный файл, выводящий содержимое текстовых файлов,
содержащих заданное с помощью команды findstr слово (без различия верхнего и
нижнего регистров), для текстовых файлов заданного типа в заданной папке. Файлы в
папке просматриваются с помощью команды for.
В качестве первого (обязательного) параметра должно быть задано имя папки (для
текущей папки задается символ "."). Вторым (необязательным) параметром является тип
файла:
 text – для текстовых файлов (с расширением .txt);
 bat – для командных файлов (с расширением .bat);
 all – для всех текстовых файлов (с расширениями .txt и.bat).
Если второй параметр не задан, выдается запрос на ввод имени файла (в имени
файла могут быть использованы символы "?" и "*") и запрос на ввод расширения файла
(должно быть одно из перечисленных выше расширений).
Слово поиска задается с помощью запроса.
Для вывода содержимого текстовых файлов вызывается программа
C:\WINDOWS\Notepad.exe, а для вывода содержимого командных файлов – команда
edit.
Для значения параметра text в конце должно быть выведено общее количество
текстовых файлов в папке, для значения параметра bat – общее количество командных
файлов в папке, а для значения параметра all – общее количество текстовых и
командных файлов в папке.
Если заданной строки поиска нет в файле, выводится сообщение «Строка
поиска не найдена в файле имя-файла», иначе выводится строка «Вывод
содержимого файла имя-файла».
Вариант 5-11
Создайте командный файл, выводящий имена файлов заданного типа в заданной
папке.
В качестве первого (обязательного) параметра должно быть задано имя папки (для
текущей папки задается символ "."). Вторым (необязательным) параметром является
порядок сортировки вывода имен файлов: /asc – для сортировки по возрастанию и
/desc – для сортировки по убыванию. Если второй параметр не задан, сортировка не
производится.
В начале выполнения файла в цикле (с использованием команды for с опцией /L)
задаются запросы на ввод расширений файлов (до пяти расширений). Можно ввести
меньше расширений, задав для значения расширения пустую строку.
Имена файлов в папке выводятся с помощью команды dir /B. При наличии
второго параметра имена файлов перед выводом сортируются. После вывода имен файлов
выводится также общее количество файлов заданного типа в папке.
Если файлов указанного типа нет в папке, выводится сообщение «В папке нет
файлов типа имя-типа».
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
- 24 Информатика
Лабораторная работа 1-054
Вариант 5-12
Создайте командный файл, выполняющий переименование файлов заданного типа.
В качестве первого (обязательного) параметра должно быть задано имя папки, с
которой начинается просмотр (для текущей папки задается символ "."). Вторым
(необязательным) параметром является тип файла:
 text – для текстовых файлов (с расширением .txt);
 prog – для командных файлов (с расширением .bat);
 all – для всех файлов папки.
Если второй параметр не задан, выдается запрос на ввод имени файла (в имени
файла могут быть использованы символы "?" и "*") и запрос на ввод расширения файла
(должно быть одно из перечисленных выше расширений).
После этого определяется и выводится (в зависимости от значения второго
параметра) количество файлов заданного типа или всех файлов в папке.
Затем (с использованием команды for с опцией /L) в цикле выводятся имена
файлов (от 1 до количества файлов) и задаются запросы на новое имя файла (без
расширения, которое не меняется). Если введена непустая строка, имя файла изменяется
на новое имя (с помощью команды ren) и выводится сообщение об изменении файла, в
противном случае имя файла не меняется и также выводится соответствующее сообщение.
Если файлов указанного типа нет в папке, выводится сообщение «В папке нет
файлов типа имя-типа».
Вариант 5-13
Создайте командный файл, выводящий строки файлов, содержащих заданные
подстроки (с помощью команды find) в заданный файл для файлов заданного типа в
заданной папке. Файлы в папке просматриваются с помощью команды for.
В качестве первого (обязательного) параметра должно быть задано имя папки (для
текущей папки задается символ "."). Вторым (необязательным) параметром является тип
файла:
 text – для текстовых файлов (с расширением .txt);
 bat – для командных файлов (с расширением .bat);
 all – для всех файлов заданной папки.
Если второй параметр не задан, выдается запрос на ввод имени файла (в имени
файла могут быть использованы символы "?" и "*") и запрос на ввод расширения файла
(должно быть одно из перечисленных выше расширений).
В начале выполнения файла в цикле (с использованием команды for с опцией /L)
задаются запросы на ввод строк поиска (до пяти строк). Можно ввести меньше строк
поиска, задав для значения строки пустую строку.
Если файлов указанного типа нет в папке, выводится сообщение «В папке нет
файлов типа имя-типа».
Если в файле найдены строки, в которых содержится хотя бы одна из заданных
строк поиска, выводится имя файла и найденные строки с их номерами. Если строки не
найдены, выводится сообщение о том, что в файле не обнаружено строк поиска.
Для значения параметра text в конце должно быть выведено общее количество
текстовых файлов в папке, для значения параметра bat – общее количество командных
файлов в папке, а для значения параметра all – общее количество файлов в папке.
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
- 25 Информатика
Лабораторная работа 1-054
Вариант 5-14
Создайте командный файл, выводящий строки файлов, содержащих (или не
содержащих) две заданные подстроки (с помощью команды find) для заданного файла
или файлов в заданной папке. Файлы в папке просматриваются с помощью команды for.
В качестве первого (обязательного) параметра должно быть задано имя папки (для
текущей папки задается символ "."). Вторым (необязательным) параметром является
опция критерия поиска:
 /yy – выводятся строки, в которых есть и первая и вторая подстроки поиска;
 /yn – выводятся строки, в которых есть первая подстрока поиска, но нет
второй подстроки поиска;
 /ny – выводятся строки, в которых нет первой подстроки поиска, но есть
вторая подстрока поиска;
 /nn – выводятся строки, в которых нет ни первой, ни второй подстроки поиска.
Если параметр не указан, предполагается значение /yy.
В качестве третьего (необязательного) параметра может быть задано имя файла, в
котором будет выполняться поиск (в имени файла могут быть заданы символы "*" и/или
"?". Если имя файла не задано, поиск выполняется во всей папке.
В начале выполнения файла выдается запрос на ввод первой подстроки поиска
(непустой строки) и второй подстроки поиска (непустой строки).
После вывода строк должно быть выведено общее количество просмотренных
файлов в папке (это либо общее количество файлов в папке, либо количество файлов,
заданных в пятом параметре).
Примечание: строки, не содержащие заданную подстроку, определяются с
помощью команды find с опцией /v.
Вариант 5-15
Создайте командный файл, удаляющий файлы с заданным расширением.
В качестве первого (обязательного) параметра должно быть задано имя папки (для
текущей папки задается символ "."). Вторым (необязательным) параметром является
опция /chars. Если второй параметр задан, выводятся имена и характеристики файлов, в
противном случае – только имена файлов.
В начале выполнения командного файла выдается запрос на ввод расширения.
После этого определяется количество файлов с заданным расширением.
После этого в цикле (с использованием команды for) выводятся имена и/или
характеристики файлов (в зависимости от наличия второго параметра) с заданным
расширением и выдается запрос на удаление файла: «Удалить файл: введите yes
или no». Если ответ yes, файл удаляется, если no – сохраняется. Если ответ другой (не
yes и не no), запрос повторяется.
Если файлов с заданным расширением нет в папке, выводится сообщение «В
папке нет файлов с расширением имя-расширения».
6. СОДЕРЖАНИЕ ОТЧЕТА
В отчете должны быть представлены следующие разделы:
1. Текст созданного командного файла.
2. Пример вывода командного файла (если какой-либо параметр имеет
несколько допустимых значений, для каждого значения этого параметра).
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
- 26 Информатика
Лабораторная работа 1-054
3. Файл или файлы вывода команды (если вывод команды выполняется в
файл).
4.
5.
параметр.
6.
7.
Вывод справки команды (для значения параметра /?).
Вывод команды в случаях, когда не задан каждый обязательный
Вывод команды, если не существует файл или каталог.
Вывод команды для недопустимого значения параметра.
7. ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ
1. Как задаются командные файлы в Windows и как задаются параметры при их
вызове?
2. Как интерпретируются параметры внутри командных файлов в Windows?
Какие модификаторы можно задать для параметров командных файлов?
3. Какие основные команды используются в командных файлах Windows? Дайте
краткое описание каждой команды.
4. Как выполняется управление выводом на экран команд в командном файле и
как вывести сообщение в командном файле Windows? Для каких целей используется
префикс "@" в строках командного файла Windows?
5. Какие функции выполняют команды cls, rem и color в командных файлах
Windows?
6. Какие работают команды pushd и popd в командных файлах Windows? Как
задается безусловный переход и метка в командных файлах Windows?
7. Как задается и как выполняется расширенное сравнение двух строк в команде
if в командных файлах Windows?
8. Как задается и как выполняется проверка кода завершения и существования
файла в команде if в командных файлах Windows?
9. Как задается и как выполняется проверка версии командного процессора и
существования переменной в команде if в командных файлах Windows?
10. Как задается и как выполняется команда find в командных файлах Windows?
11. Как задается и как выполняется команда findstr в командных файлах
Windows?
12. Какие метасимволы можно задать в команде findstr в командных файлах
Windows?
13. Как задается и как выполняется команда sort в командных файлах Windows?
14. Как задается и как выполняется основная форма команды for и форма с
опцией /D в командных файлах Windows?
15. Как задается и как выполняется формы команды for с опциями /R и /L в
командных файлах Windows?
16. Как задается и как выполняется формы команды for с опцией /F в командных
файлах Windows?
17. Как выполняются операции добавления, изменения, просмотра и удаления
переменных окружения с использованием команды set в командных файлах Windows?
18. Какие основные системные переменные можно использовать в команде set в
командных файлах Windows?
19. Как с помощью команды set задается ввод данных с клавиатуры в командных
файлах Windows?
20. Как с помощью команды set задаются и выполняются операции над
числовыми выражениями в командных файлах Windows?
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
- 27 Информатика
Лабораторная работа 1-054
21. Для каких целей используются команды setlocal и endlocal в командном
файле?
22. Как задаются и как выполняются команды call и pause в командных файлах
Windows?
23. Как задается и как выполняется команда start в командных файлах Windows?
24. Как задается и как выполняется команда cmd в командных файлах Windows?
25. Как задаются и как выполняются последовательности команд в командных
файлах Windows?
Файл: 308816869 Создан: 16.12.2001 Модифицирован: 23.01.2016
Автор: Шонин В.А.
Download