Конвейеризация команд Windows

№11-1,

технические науки

В статье рассматривается способ выделять из перехваченных данных необходимые для дальнейшего использования.

Похожие материалы

Конвейер команд

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

Рассмотрим выдачу, полученную командой dir для корневого директория диска СЛ.

28.03.2006 23:31 <DIR> 777
25.01.2007 19:16 <DIR> Из HSE 
17.09.2005 15:56 <DIR> 2 
10.09.2005 16:05 <DIR> 1
21.11.2005 22:47 <DIR> PerfLogs
04.12.2005 19:24 <DIR> temp
15.01.2006 16:57 <DIR> 2006н 02.03.2006 18:12 <DIR> Magic Waterfall Screensaver
04.03.2006 13:52 <DIR> Test_System
02.05.2006 16:22 <DIR> Webservers
02.02.2004 22:26 <DIR> DVD 17.05.2006 15:54 410 543 braun_dyen_kod_da_vinchi.rt f.zip
11.05.2006 16:19 184 320 Olympus 310.doc
06.10.2006 11:12 26 624 bakers word.doc
03.01.2005 16:44 <DIR> lc
25.03.2004 11:09 <DIR> ACTIVstudio
21.02.2005 18:30 182 18.07.2005 13:07 <DIR> 2005-2006 уч год 11.08.2005 11:48 <DIR> JPG-BMP
9 файлов 622 331 байт
29 папок 254 394 368 байт свободно
С:\>_

Надо отметить, что этот директорий очень напряжённый и насыщенный. Чаще всего он по команде dir не умещается в окне консоли команд.

Здесь приведен лишь фрагмент вывода по команде dir. Обратим внимание, что кроме огромного перечня файлов и папок команда dir даёт и сводные результаты: в директории хранится 9 файлов общим объёмом 622 331 байт, и 29 папок.

При этом на диске, в корневой директорий которого мы заглядывали, свободно 254 394 368 байт.

Это значит, что команда dir даёт достаточное количество информации, чтобы ответить на такие вопросы:

  • Сколько файлов содержится в данном каталоге?
  • Какой объём занимают файлы, хранящиеся в данном каталоге?
  • Сколько папок содержится в данном каталоге?
  • Сколько свободного места есть на данном диске?

Но чтобы получить ответы на эти вопросы, надо переворошить груду информации и найти в ней то, что Вас интересует.

Ответ должен быть коротким, понятным и информативным.

Чтобы удовлетворить этим требованиям, одной команды dir недостаточно.

Возможности этой (и других команд) можно расширить с помощью конвейера.

Вспомним, что есть ещё такая команда find, по которой можно среди большого количества строк найти ту, которая больше всего интересует.

Конвейер команд позволяет выдачу, полученную по одной команде, предоставить для анализа другой команде.

Построим конвейер из двух команд: dir и find.

Первая команда получит информацию о корневом директории диска С:, а вторая позволит выделить из этой информации (иногда -очень большого объёма) нужную.

Такое сочетание команд в конвейере позволяет ответить на вопрос:

«Сколько файлов хранится в данной директории и каков их объём?».

Выполним в консоли команд:

C:\>dir | find "файлов"
19 файлов 136 257 байт

Здесь для команды find в кавычках мы указали поисковое предписание: что искать? А если вместо слова «файлов» указать слово «байт»?

C:\>dir | find "байт"
19 файлов 136 257 байт

Получили то же самое.

Внутри одной строки программа find неспособна разделить информацию.

Использование конвейера команд

Сколько файлов хранится в данной директории и каков их объём?

Для ответа на вопрос, заданный в заголовке, составим запрос:

C:\77>dir | find "файлов"
19 файлов 136 257 байт

Для этой цели можно воспользоваться и другой программой: findstr.

C:\>dir AX1 | findstr "файлов"
25 файлов 3 444 924 байт

Какие текстовые файлы хранятся в этом директории?

Для ответа на этот вопрос составим запрос:

C:\77>dir | find ".txt" и получим ответ:
05.11.2006 12:36 23 004 test0-1.txt
04.11.2006 17:38 16 572 test0-1v2.txt

В директории найдено два файла с расширением txt.