Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛабораторныйПрактикум1.pdf
Скачиваний:
367
Добавлен:
02.02.2015
Размер:
4.76 Mб
Скачать

4.1.5. Маска имени

Некоторые команды (копирования, удаления, переименования) для обработки группы файлов с одинаковыми элементами в имени позволяют использовать маску – специальные символы шаблона. Символ «?» обозначает один любой символ, а символ «*» обозначает любое количество любых символов. Так, для обозначения всех файлов без расширений можно задать маску *. (пустое расширение, только точка), для обозначения всех файлов типа .TXT можно задать маску *.TXT, где указывается любое имя и расширение .TXT. Под обозначение a?.*

подходят имена a1.txt, A5, AB.doc, но не подходят a12.txt, b.doc.

Используя ранее изученные команды сохраните в файл F:\DIR_WIN.TXT отсортированный по алфавиту список файлов (оглавление, краткое, только имена файлов) диска C:, начиная с папки \WINDOWS, которые имеют расширение TXT. Результат (команды и их параметры) также запишите в журнал.

4.1.6.Ассоциация типов файлов командой консоли

Впрошлой лабораторной работе рассматривалась ассоциация файлов (документов) приложениям. В консоли ассоциация проверяется командой ASSOC, которая позволяет как отобразить, так и назначить ассоциацию расширений типам файлов (см. справку). Наберите команды:

ASSOC .TXT

ASSOC .DOC

ASSOC .MP3

ASSOC .MPG

Обратите внимание, что ASSOC связывает расширение с общим типом (не программой), а уже типу (словесному описанию, обобщению) может назначаться одна или несколько программ. Например, расширения

.MPE, .MPEG, .MGP ассоциируются по умолчанию с типом mpegfile (или GomPlayer.mpg при установке плеера GOM), который в свою очередь связывается с плеером (WMP, GOM player или др.).

Если команде ASSOC в качестве параметра задать тип (не расширение), то она вернёт его словесное описание.

45

Тип с программой связывает консольная программа FTYPE. Выполните команду (в качестве параметра тип впишите тип, возвращённый командой ASSOC .MPG) :

FTYPE тип

Для запуска приложения с автоматической ассоциацией приложения используется команда START. Кроме этого, она предоставляет ряд удобных параметров для организации пакетного выполнения. Выполните команду:

START F:\D.TXT

Запишите, что произошло, закройте открывшееся окно.

4.1.7. Операторы использования потоков (создания конвейеров) ввода-вывода и объединения команд*

Многие команды позволяют использовать потоки (конвейеры) ввода-вывода, которые могут быть файлами или устройствами. По умолчанию существует три стандартных потока – поток ввода (STDIN23, №0) и два потока вывода: стандартный (STDOUT, №1) и вывода ошибок и других сообщений (STDERR, №2). По умолчанию все три стандартных потока осуществляют операции ввода/вывода через консоль24 (CON). Если рассматривать ввод данных при выполнении команды, то вместо ввода с клавиатуры данные можно перенаправить из файла, для этого используется символ «<». Для перенаправления результатов работы команды в файл вместо экрана, используется символ «>», файл будет создан (если уже есть, то будет усечён до пустого), и в него будет записан выводимый командой текст. Двойной знак «>>» открывает поток для дозаписи, сохраняя содержимое файла. Для перенаправления ввода/вывода в параметрах команд можно использовать имена устройств (CON, NUL, PRN, LPT1, COM1…). Для устройств операторы «>» и «>>» работают одинаково.

23 Using command redirection operators (http://technet.microsoft.com/en-us/library/bb490982.aspx)

24 Изменение системного устройства ввода/вывода по умолчанию может быть произведено командой CTTY (практически не используется).

46

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

Пример перенаправления результатов в файл – сохранение краткого списка папки Windows в файл WIN.DIR в корневой папке тома F: вместо вывода на экран:

DIR /b C:\WINDOWS >F:\WIN.DIR

Для дозаписи в этот файл другого списка можно повторить команду с указанием другой папки и использованием перенаправления двойным знаком «>>».

Можно заметить, что приведённая выше команда довольно полезна. Например, у вас на компьютере есть набор файлов, а ваш друг физически не может получить доступ к вашим файлам, чтобы составить список необходимых. Допустим, что файлы находятся в папке «D:\Мои файлы», и эта папка внутри имеет структуру подпапок. Командой:

DIR /S "D:\Мои файлы" > "D:\Список файлов.dir"

вы сохраните список всех файлов вместе со структурой папок в текстовый файл «D:\Список файлов.dir». Этот файл можно заархивировать и передать другу по электронной почте или на флэш-накопителе. Тип dir позволяет понять, что внутри список папки, кроме того, ряд файловых менеджером (FAR manager в том числе) содержат модули расширения, позволяющие просматривать список файлов как обычную папку или архив. Таким образом, друг может выбрать нужные ему файлы и составить свой список, редактируя ваш в текстовом редакторе.

Как было сказано выше, в качестве устройства ввода используется STDIN (0), а в качестве устройств вывода два: стандартное STDOUT (1) и устройство вывода ошибок и других сообщений STDERR (2). Использование двух устройств вывода позволяет разделять вывод основной информации и сообщений об ошибках. По умолчанию операторы перенаправления вывода «>» и «>>» перенаправляют стандартный вывод STDOUT (1).

Текущим диском у вас должен быть диск F: (если это не так, перейдите на него командой F:, если текущая папка не корневая, то

47

вернитесь в корневую папку командой CD \). На этом диске отсутствует папка с именем «3» (три). Выполните команду DIR 3. На экран будет выведено сообщение об отсутствии такой папки. Выполните команду с сохранением результата в файл DIR "3">3.dir, в этой команде имя взято

вкавычки, так как одиночная цифра перед оператором перенаправления ввода/вывода воспринимается как номер канала, что приведёт к неверному выполнению команды. Эта команда выводит основной текст команды в файл 3.dir, но сообщение об ошибке выводится на экран. Для сохранения текста и сообщений об ошибках в разные файлы используйте следующую команду: DIR "3">3.dir 2>err.txt, в ней второй оператор перенаправления вывода «2>» использует явное указание номера перенаправляемого канала, и сообщения об ошибках будут сохранены в файл err.txt, на консоль при этом ничего не выводится. Каналы можно перенаправлять друг в друга. Для сохранения всей информации в один файл выполните команду в следующем формате: DIR "3">3e.dir 2>&1,

вней канал ошибок 2 перенаправляется в канал стандартного вывода 1, который в свою очередь перенаправлен в файл. Введённый слитно с номером назначения символ & позволяет определить, что задан номер канала, а не имя файла.

Командой TYPE просмотрите содержимое полученных файлов 3.dir, err.txt и 3e.dir.

Для обработки результатов команд можно использовать фильтры. Для запуска фильтров с командами используется знак сцепки «|» (оператор pipe). При сцепке нескольких команд, вывод результатов предыдущей команды перенаправляются на вход следующей команде.

Кроме оператора сцепки в конвейер «|» существуют и другие операторы объединения команд, но они не передают данные между объединяемыми командами. Для простого последовательного выполнения команд в командной строке может быть использован оператор «&»:

DIR C:\Windows & DIR C:\Windows\System32

что аналогично последовательной записи операторов:

DIR C:\Windows

DIR C:\Windows\System32

48

Двойной оператор «&&» позволяет выполнить вторую команду в цепочке, если первая выполнена успешно, без ошибок (код возврата содержится в переменной окружения ERRORLEVEL и при успешном завершении равен нулю). Двойной оператор «||» наоборот, выполняет вторую команду в случае, если первая завершилась с ошибкой (значение в переменной окружения ERRORLEVEL больше нуля). В строке может быть несколько разных операторов объединения команд. В сценариях использование логических операторов сцепления позволяет избежать в некоторых случаях использование условных операторов, что упрощает код сценария и улучшает его читаемость.

Командный интерпретатор приоритетно рассматривает служебные символы «|, &, <, >» в качестве операторов, для использования этих символов в текстовых строках команд (например, echo) текст должен быть помещён в двойные кавычки или перед служебными символами должен быть вставлен символ «^».

Системными фильтрами являются команды:

MORE (англ.: больше, ещё) – по заполнению экрана ожидает нажатия клавиши для продолжения вывода (этот фильтр удобно использовать для чтения большой справки у консольных команд, в Windows 7 для вывода справки команд по умолчанию уже включён поэкранный вывод);

SORT – производит сортировку строк с указанными параметрами; FIND – производит поиск и выборку строк по указанному критерию. Фильтры могут получать данные как с устройства ввода, так и в

качестве имени файла, указанного в качестве параметра.

Так, команда TYPE выводит текстовый файл на консоль, для поэкранного вывода большого файла можно использовать фильтр MORE:

TYPE файл.txt | MORE

Фильтр MORE получает содержимое файла через стандартный вход (STDIN) и выводит результат на устройство стандартного вывода (STDOUT), указание имени файла в качестве параметра MORE даст тот же результат (возможно, даже немного быстрее):

MORE файл.txt

Это справедливо и для других фильтров.

49

Строка конвейера команд, которая выводит сортированный список строк, содержащих «WIN» из списка папки C:\WINDOWS:

DIR C:\WINDOWS | FIND "WIN" | SORT

может быть реализована следующими командами:

DIR C:\WINDOWS > %TMP%\file1.txt

FIND %TMP%\file1.txt "WIN" > %TMP%\file2.txt && DEL %TMP%\file1.txt SORT %TMP%\file2.txt && DEL %TMP%\file2.txt

Вприведённом выше развёрнутом примере для промежуточного хранения текста используются текстовые файлы file1.txt и file2.txt, создаваемые в папке временных файлов, которые удаляются после использования командой DEL в случае, если предыдущая команда завершилась без ошибок.

Вкачестве примера выполните следующие команды:

TYPE C:\Windows\System32\drivers\etc\services

TYPE C:\Windows\System32\drivers\etc\services| MORE

TYPE C:\Windows\System32\drivers\etc\services| FIND /v "udp"

TYPE C:\Windows\System32\drivers\etc\services| FIND /v "udp"| SORT FIND C:\Windows\System32\drivers\etc\services/v "udp"|SORT>F:\R.TXT

Первая команда выводит на экран содержимое текстового файла services, находящегося в папке \WINDOWS\system32\drivers\etc тома C:.

Вывод производится без пауз, причём часть текста теряется, перемещаясь за верхнюю границу окна консоли (правда, в случае большого буфера консоли, текст можно прокрутить назад). Вторая команда выводит текст поэкранно, позволяя прочесть его. Третья команда выводит все строки, не содержащие подстроки «udp» (ссылку на сетевой протокол). Четвертая команда сортирует результат. Пятая команда перенаправляет вывод результата в текстовый файл на диске F:.

Заметьте, что выполнение команд аналогично:

TYPE C:\Windows\System32\drivers\etc\services | MORE

MORE C:\Windows\System32\drivers\etc\services

также как и

TYPE C:\Windows\System32\drivers\etc\services | FIND /v "udp" FIND C:\Windows\System32\drivers\etc\services /v "udp"

Сравните результат выполнения команд:

50