Лабораторная работа № 1-04

advertisement
-1Информатика
Лабораторная работа 1-04
Лабораторная работа № 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. Набор текста командного файла в этой кодировке
выполняется либо в текстовом редакторе Блокнот при задании в команде Шрифт меню
Формат шрифта Terminal, либо в любом другом редакторе, поддерживающем кодировку
OEM (например, редакторе Bred3).
4.2. Вызов командного файла
Последовательность команд, записанную в файле, можно выполнить, набрав имя
командного файла (расширение .bat при этом можно не указывать), а также параметры.
При вызове командного файла может быть задано до 9 параметров (число
параметров может быть увеличено при использовании команды shift). В самом командном
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
-2Информатика
Лабораторная работа 1-04
файле эти параметры обозначаются символами %1 - %9. При выполнении командного
файла эти символы будут заменены значениями параметров с соответствующими
номерами. Если в командной строке при вызове командного файла задано меньше девяти
параметров, то «лишние» символы из %1 - %9 замещаются пустыми строками.
Если задаваемый параметр содержит пробел или пробелы, он должен быть
заключен в двойные кавычки (символ "), поскольку пробелы в команде вызова
командного файла используются для отделения параметров друг от друга.
Параметры при вызове команд могут отделяться между собой либо пробелами,
либо запятой (символ ","), либо точкой с запятой (символ ";").
Параметры не могут принимать следующих значений: &, | или символы ( и ).
Чтобы задать эти значения в качестве параметров, их необходимо либо заключить в
двойные кавычки, либо задать перед ними символ ^.
В командном файле можно использовать также символы %0, значение которых –
полный путь к командному файлу командного файла, а также символы %* – список
параметров командного файла.
Для выполнения командного файла операционная система вызывает команду cmd
– интерпретатор команд.
Если в командном файле символ % используется не для обозначения параметров, а
для других целей (например, как часть имени файла), то его надо набрать дважды. Так,
чтобы в командном файле указать файл XYZ%.COM, надо написать в строке командного
файла XYZ%%.СОМ.
С символами %0-%9 (%номер-параметра) можно также использовать следующие
основные модификаторы:
 %~номер-параметра – расширение %номер-параметра и удаление
апострофов("");
 %~fномер-параметра – параметр рассматривается как имя файла и %номерпараметра заменяется полным путем к этому файлу;
 %~pномер-параметра – параметр рассматривается как имя файла и, если файл с
указанным именем существует, %номер-параметра заменяется путем к папке, в которой
находится этот файл;
 %~dномер-параметра – параметр рассматривается как имя файла и, если файл с
указанным именем существует, %номер-параметра заменяется именем диска, на
котором находится этот файл;
 %~nномер-параметра – параметр рассматривается как имя файла и, если файл с
указанным именем существует, %номер-параметра заменяется его именем (без указания
пути);
 %~xномер-параметра – параметр рассматривается как имя файла и, если файл с
указанным именем существует, %номер-параметра заменяется его расширением (с
предшествующим символом ".");
 %~tномер-параметра – параметр рассматривается как имя файла и, если файл с
указанным именем существует, %номер-параметра заменяется датой и временем
модификации файла;
 %~zномер-параметра – параметр рассматривается как имя файла и, если файл с
указанным именем существует, %номер-параметра заменяется значением размера файла
(в байтах);
 %~dpномер-параметра – параметр рассматривается как имя файла и, если файл
с указанным именем существует, %номер-параметра заменяется его именем и путем;
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
-3Информатика
Лабораторная работа 1-04
 %~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 фт
где ф – шестнадцатеричная цифра, задающая цвет фона, а т – шестнадцатеричная цифра,
задающая цвет текста.
Для цветов определены следующие значения:
Код
0
1
2
3
4
5
6
7
Цвет
Черный;
Синий;
Зеленый;
Голубой;
Красный;
Сиреневый;
Желтый;
Белый;
Код
8
9
A
B
C
D
E
F
Цвет
Серый;
Светло-синий;
Светло-зеленый;
Светло-голубой;
Светло-красный;
Светло-сиреневый;
Светло-желтый;
Ярко-белый.
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
-4Информатика
Лабораторная работа 1-04
Команда 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).
В Windows XP введена более удобная расширенная команда if, которая имеет
следующий синтаксис:
if [/i] условие (
команда-1-1
команда-1-2
…
) else (
команда-2-1
команда-2-2
…
)
Часть команды if, начиная с команды else, может быть пропущена.
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
-5Информатика
Лабораторная работа 1-04
В условии сравнения двух строк в расширенной команде 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] "строка-поиска" [[диск:][путь]имя-файла[...]]
Обязательный параметр "строка-поиска" задает последовательность символов,
для которой будет производиться поиск. Параметр [[диск:][путь]имя-файла[...]] задает
путь к файлу. Если этот параметр не указан, данные берутся из стандартного ввода
команды.
Опции команды find действуют следующим образом:
 /v – выводит все строки, не содержащие строку, заданную параметром "строкапоиска" (если эта опция не задана, выводятся все строки, содержащие строку "строкапоиска");
 /c – вывод количества строк, содержащих строку поиска;
 /n – вывод номеров строк перед строками;
 /i – поиск без различия строчных и заглавных букв.
4.3.9. Команда findstr
Команда findstr также выполняет поиск заданной строки текста в файле или
нескольких файлах, однако обладает большими возможностями по сравнению с командой
find.
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
-6Информатика
Лабораторная работа 1-04
Команда 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).
Метасимволы – это символы в шаблоне, имеющие специальное значение. В
команде findstr можно использовать следующие метасимволы:
 символ . – любой одиночный символ;
 символ * – предшествующий этому символу символ или класс может
повторяться 0 или более раз;
 символы .* – любая строка символов;
 символ ^ – поиск в начале строки;
 символ $ – поиск в конце строки;
 [класс] – любой символ из множества класс;
 [^класс] – любой символ, не заданный во множестве класс;
 [символ1-символ2] – любой символ в диапазоне от символ1 до символ2;
 \>строка – строка поиска, находящаяся в начале слова;
 строка\> – строка поиска, находящаяся в конце слова;
 \метасимвол – метасимвол (., *, ^, $, [ или \) трактуется как обычный символ.
В строке поиска можно задать несколько строк, разделенных пробелами. В этом
случае достаточно, чтобы хотя бы одна из этих строк присутствовала в просматриваемой
строке. Однако, если строка поиска задана в опции /c, то выполняется поиск на
совпадение всех символов строки.
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
-7Информатика
Лабораторная работа 1-04
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).
При сортировке регистр букв не учитывается, т.е. строчные и заглавные буквы,
например, А и а, считаются одинаковыми символами.
4.3.11. Команда for
Команда for выполняет некоторую команду или последовательность команд для
каждого файла из заданного множества.
Команда имеет следующий синтаксис:
for переменная in (множество) do команда
Переменная обычно используется в команде и при выполнении команды
последовательно принимает имена файлов из заданного множества. Если переменная
задается вне командного файла, она должна начинаться с символа %, если внутри
командного файла – должна начинаться с символов %%.
Множество задает один или несколько файлов, каталогов, диапазон значений или
текстовых строк, подлежащих обработке заданной командой. Элементы множества
отделяются друг от друга пробелами.
Команда
это
отдельная
команда
или
последовательность
команд.
Последовательность команд должна быть задана, как это описано в 2.1.14.3.
В командах или последовательностях команд для переменных можно задавать те
же модификаторы, что определены для параметров вызова командного файла (см. 4.1).
Следует отметить, что все компоненты команды for, включая команды после
оператора do, должны задаваться в одной строке.
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
-8Информатика
Лабораторная работа 1-04
Первая расширенная форма команды 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 команда
Эти варианты расширения разбивают текст файла в параметре множество, либо
строку в параметре "строка", либо вывод команды в параметре 'команда' на отдельные
смысловые элементы – лексемы. Разделителями между лексемами являются один или
несколько символов-ограничителей. Параметры-разбора содержат список параметров,
отделенных друг от друга пробелом или пробелами.
Лексемы образуют последовательность. С каждым из элементов этой
последовательности можно связать свой индекс. Первый индекс, например, %%I задается
как значения переменной в команде for. Остальные лексемы будут доступны с индексами
%%J (вторая лексема), %%K (третья лексема) и т.д. По умолчанию для анализа доступна
только первая лексема. Чтобы сделать остальные лексемы доступными для анализа,
необходимо в параметрах-разбора задать ключевой параметр
tokens=список
Список задает номера лексем, доступные для анализа, либо в виде списка номеров
лексем, отделенных друг от друга запятыми (например, 1,2,3), либо в виде диапазона
значений (например, 1-4). Если в конце списка задан символ "*", то создается
дополнительная переменная, Значением которой будут все оставшиеся лексемы.
Например, если задан параметр
tokens=1,2*,
то в качестве значения переменной %%I будет доступна первая лексема, в качестве
значения переменной %%J – вторая лексема и в качестве значения переменной %%K –
третья и последующая лексема.
По умолчанию символами-разделителями между лексемами являются пробел и
символ табуляции. Чтобы задать свои символы-разделители, необходимо в параметрахразбора задать ключевой параметр
delims=символы
Так, чтобы задать в качестве символов-разделителей запятую, точку с запятой и
точку, необходимо задать следующий параметр:
delims=,;.
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
-9Информатика
Лабораторная работа 1-04
Если необходимо задать в качестве символа-разделителя пробел, параметр должен
быть последним в списке параметров-разбора, а символ пробела – последним в списке
символов-разделителей, например:
"tokens=1,2* delims=,;. ".
Ключевой параметр
skip=число
в списке параметров-разбора задает количество строк, пропускаемых без анализа в
начале файла, а параметр
eol=символ
позволяет исключить из анализа строку, первым символом которой является заданный
символ.
Последний параметр в списке параметров-разбора:
usebackq,
задаваемый без значения позволяет использовать следующие варианты записи команды
for, отличающиеся от приведенных выше ограничителями параметра в круглых скобках:
for /F ["usebackq параметры-разбора"] переменная
in ("множество") do команда
for /F ["usebackq параметры-разбора"] переменная
in ('строка') do команда
for /F ["usebackq параметры-разбора"] переменная
in (`команда`) do команда
4.3.12. Команда set
Команда set задает, удаляет и просматривает переменные окружения, а также
позволяет вводить строковые переменные, задавать числовые переменные и выполнять
операции над ними.
Для просмотра установленных переменных окружения и их значений
используется команда set без параметров.
Для задания переменной окружения используется следующая форма команды
set:
set имя-переменной=значение
Если переменной с заданным именем нет в списке переменных окружения,
переменная будет добавлена в список и получит заданное значение, Если переменная уже
существует, ее значение будет изменено.
Если в командном файле употребить имя переменной окружения, заключенное с
обеих сторон в знаки процента (%), то оно будет заменено значением этой переменной.
Для удаления переменной окружения используется следующая форма команды
set:
set имя-переменной=
Помимо задаваемых пользователем переменных окружения, в командных файлах
можно использовать значения системных переменных окружения, основными из которых
являются:
 %CD% – возвращает путь к текущей папке;
 %DATE% и %TIME% – возвращают текущую дату и время;
 %ERRORLEVEL% – возвращает код ошибки последней использовавшейся
команды;
 %OS% – возвращает имя операционной системы;
 %PATH% – возвращает пути поиска исполняемых файлов (программ);
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
- 10 Информатика
Лабораторная работа 1-04
 %PROMPT% – возвращает параметры командной строки для текущего
интерпретатора;
 %RANDOM% – возвращает десятичное целое случайное число в диапазоне от
0 до 32767;
 %SYSTEMDRIVE% – возвращает имя диска, содержащего корневой каталог
Windows;
 %SYSTEMROOT% – возвращает путь к системному каталогу Windows;
 %USERNAME% – возвращает имя пользователя.
Для ввода строки используется форма команды set с опцией /p:
set /p имя-переменной=
Эта команда приостанавливает выполнение командного файла и ожидает ввода
строки с клавиатуры и нажатия клавиши Enter. После этого значение введенной строки
присваивается переменной с заданным именем.
Для операций над числовыми выражениями используется форма команды set с
опцией /a:
set /a выражение
В выражении могут быть заданы следующие арифметические и логические
операции:
 +, -, * и / – арифметические операции сложения, вычитания, умножения и
деления;
 % – операция определения остатка от деления двух целых чисел;
 число<<сдвиг – число рассматривается как представленное в двоичном виде и
его биты сдвигаются влево на количество позиций, указанных в параметре сдвиг
(освободившиеся биты заполняются нулями);
 число>>сдвиг – число рассматривается как представленное в двоичном виде и
его биты сдвигаются вправо на количество позиций, указанных в параметре сдвиг
(освободившиеся биты заполняются нулями);
 число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);
 , – разделение выражения;
 < > – группировка выражения.
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
- 11 Информатика
Лабораторная работа 1-04
4.3.13. Команды setlocal и endlocal
Команда setlocal устанавливает режим при котором все операции над переменными
окружения, строковыми или числовыми данными выполняются в локальной области
данного командного файла. Этот режим действует, пока в командном файле не встретится
команда endlocal, отменяющая локальный режим, либо пока не будет достигнут конец
командного файла. В этом случае, если в командном файле было изменено значение
какой-либо переменной окружения, то после окончания выполнения файла будет
действительным старое значение переменной. Если же в командном файле определены
новые переменные окружения, то после выполнения командного файла они будут
удалены.
4.3.14. Команда call
В командном файле можно вызвать другой командный файл, просто указав его имя
(и, если надо, параметры). Но после окончания работы вызванного файла выполнение
исходного командного файла продолжено не будет. Поэтому если требуется из одного
командного файла вызвать выполнение другого командного файла, а затем продолжить
выполнение исходного командного файла, то это можно сделать командой вызова call,
имеющей следующий формат:
call имя-командного-файла параметры
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 без параметров просто открывает новое окно командной строки.
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
- 12 Информатика
Лабораторная работа 1-04
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 – включение или отключение расширений командного процессора;
 /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);
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
- 13 Информатика
Лабораторная работа 1-04
 text – для текстовых файлов (с расширением .txt);
 all – для всех файлов.
Если второй параметр не задан, для него предполагается значение all.
В начале выполнения командного файла выводится запрос на ввод строки поиска в
файлах. В ответ на этот запрос вводится значение строки поиска или пустая строка. В
первом случае в окне редактора Блокнот или команды edit выводится наименование
файла, и только те строки файла, которые содержат строку поиска. Если строк поиска в
файле не обнаружено, выводится соответствующее сообщение. Во втором случае
выводится все содержимое файла. После вывода строк поиска или содержимого файла
выводится количество командных и/или текстовых файлов в папке.
Просмотр файлов заданных типов выполняется с помощью команды for.
При значении /? для первого параметра должна выводиться справка о командном
файле: действие, вызов и пояснения к параметрам.
Ниже следует текст командного файла с пояснениями.
В начале командного файла можно вывести заголовок-пояснение:
@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
)
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
- 14 Информатика
Лабораторная работа 1-04
Следующими шагами являются установка локального режима изменений
переменных окружения и переход в папку, заданную в первом параметре с проверкой
существования этой папки:
rem Установка локального режима
rem изменений переменных окружения
setlocal
rem Переход в папку, определенную первым параметром
if %1 NEQ . (
pushd %1
)
rem Если при выполнении команды произошла ошибка
if errorlevel 1 (
rem Вывод сообщения
echo Папка %1 не существует
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 (
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
- 15 Информатика
Лабораторная работа 1-04
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
)
Если значение второго параметра задано, но не равно не 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%" >
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
- 16 Информатика
Лабораторная работа 1-04
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%
) 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%
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
- 17 Информатика
Лабораторная работа 1-04
) else (
rem Вывод сообщения об отсутствии
rem текстовых файлов
echo В папке %CD% нет командных файлов
)
)
Далее выполняется проверка существования временного файла и его удаление:
rem Если временный файл существует
if exist temp$$$$.txt (
rem Удаление временного файла
erase temp$$$$.txt
)
И, наконец, последние команды файла восстанавливают текущую папку и
отменяют локальный режим для переменных окружения:
:dir_restore
rem Если каталог - не текущий каталог
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.
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
- 18 Информатика
Лабораторная работа 1-04
5.
Текстовый файл должен быть в кодировке OEM (DOS). Его можно
редактировать либо во встроенном редакторе Far (в режиме DOS), либо в текстовом
редакторе Блокнот (со шрифтом Terminal), либо в редакторе Bred3 (в кодировке OEM).
6.
Для всех вариантов при значении /? для первого параметра должна
выводиться справка о командном файле: действие, вызов и пояснения к параметрам.
7.
Для всех вариантов в командном файле должна выполняться проверка
параметров:
 если параметр является обязательным, производится проверка его
задания;
 если параметр – файл или папка, выполняется проверка их
существования;
 если параметр имеет недопустимое значение, должно выводиться
сообщение об ошибке.
8.
Последующие действия выполняются в соответствии с вашим вариантом.
9.
Создайте новый файл в текстовом редакторе Блокнот для записи результатов
работы командного файла.
10. После создания командного файла проверьте его работу при всех возможных
значениях параметров и скопируйте результаты выполнения с экрана системного
приложения Командная строка или командной оболочки Far в окно текстового
редактора.
11. Покажите преподавателю работу вашего командного файла для всех
возможных значений параметров.
12. Сохраните файл, содержащий командный файл, и файл, содержащий
результаты работы командного файла, на внешний носитель, а затем удалите папку temp.
Вариант 5-01
Создайте командный файл вывода имен файлов(с помощью команды dir)
заданных типов из заданной папки.
В качестве первого (обязательного) параметра должно быть задано имя папки (для
текущей папки задается символ "."). Вторым (необязательным) параметром является тип
файла:
 prog – для программных файлов (с расширениями .com и .exe);
 all – для всех файлов.
Вариант 5-02
Создайте командный файл, выводящий оглавление папки (полученное с помощью
команды dir) на экран дисплея.
В качестве первого (обязательного) параметра должно быть задано имя папки (для
текущей папки задается символ "."). Вторым (необязательным) параметром является вид
выводного потока:
 d – вывод на дисплей;
Вариант 5-03
Создайте командный файл копирования файлов заданного типа (с помощью
команды copy) из одной папки в другую.
В качестве первого (обязательного) параметра должно быть задано имя исходной
папки (для текущей папки задается символ "."). Вторым (необязательным) параметром
является тип файла:
 image – для файлов изображений (с расширениями .bmp , .gif, .jpg и .png);
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
- 19 Информатика
Лабораторная работа 1-04
 all – для всех файлов.
Если второй параметр не задан, для него предполагается значение all.
В командном файле выдается запрос на ввод имени папки, в которую будут
копироваться файлы (для текущей папки задается символ "."). Имена исходной папки и
папки, в которую будет производиться копирование, не должны совпадать. Если папка с
заданным именем не существует, она создается с помощью команды mkdir.
Вариант 5-04
Создайте командный файл, выполняющий просмотр файлов папки в соответствии с
их типом.
В качестве первого (обязательного) параметра должно быть задано имя папки (для
текущей папки задается символ "."). Вторым (необязательным) параметром является тип
файла, который может иметь одно из следующих значений:
 image – для файлов изображений с расширениями .bmp, .gif, .jpg или .png
(вызывается программа C:\WINDOWS\system32\mspaint.exe);
 text – для текстовых файлов с расширением .txt (вызывается программа
C:\WINDOWS\Notepad.exe).
Если второй параметр не задан, выдается запрос на ввод имени файла (в имени
файла могут быть использованы символы "?" и "*") и запрос на ввод расширения файла
(должно быть одно из перечисленных выше расширений).
6. ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ
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?
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
- 20 Информатика
Лабораторная работа 1-04
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?
21. Для каких целей используются команды setlocal и endlocal в командном
файле?
22. Как задаются и как выполняются команды call и pause в командных файлах
Windows?
23. Как задается и как выполняется команда start в командных файлах Windows?
24. Как задается и как выполняется команда cmd в командных файлах Windows?
25. Как задаются и как выполняются последовательности команд в командных
файлах Windows?
Файл: Document1 Создан: 24.11.2012 Модифицирован: 03.05.2016 Автор: Прищепа Т. А., Шонин
В.А.
Download