Утилита dir — поиск файлов в командной строке

Утилита dir — поиск файлов в командной строке Командная строка

В продолжение предыдущей статьи, мы рассмотрим поиск файлов через командную строку с помощью утилиты Dir. Утилита dir как правило используется для вывода списка файлов и каталогов в заданной папке, но так как с помощью параметров можно указать фильтр для выводимой информации, то утилита командной строки подходит и для поиска файлов или каталогов. Но, прежде, немного лирики…

Как то я наблюдал такую ситуацию: женщина заходила в социальную сеть Однокласники, потом вставляла в CR-ROM диск, на котором были ее фотки с любимым котом Мурзиком. Естественно, автоматически выскакивало диалоговое окно, в котором была вкладка, вроде, точно не помню, “Копировать изображения”, женщина благополучно на нее нажимала и ждала, что все фотографии автоматически появятся на ее станице в Однокласниках. Это меня конечно улыбнуло, стоит заметить настойчивость данной дамы, так как она повторяла процесс по несколько раз и в итоге неудач, пожаловалась на качество интернет услуг. В добавок, она умудрилась установить в системе сразу две антивирусные программы (NOD и Касперский), в итоге, Windows висел не по детски.

Командная строка dir

Утилиту dir можно использовать на ровне с утилитами find и findstr. В данной статье будет рассмотрен скрипт поиска файла в командной строке Windows. Прежде чем приступать к написанию примера, давайте рассмотрим, с какими ключами работает утилита DІR:

DIR [диск: ] [путь] [имя_файла] [/А[ [ : ]атрибуты] ] [/B] [/C] [/D] [/L] [/N] [/ 0[[:] порядок]] [/P] [/Q] [/S]  [/Т[[:]дата]] [/W] [/X] [/4]

[диск: ] [путь] – тут нужно указать имя диска и каталога, содержимое которых надо показать

[имя_файла] – говорит о том, что надо включить в список имена, которые надо показать, как вы уже догадались, тут можно использовать и подстановочные знаки: * или ?. Для примера, на диске D я создал папку TEST, в которую поместил несколько документов различного типа:

  • generate.mf
  • infosys.mf
  • sysinfo.mf
  • xa_032.рdf
  • xa_033.рdf
  • xa_034.рdf
  • xa_035.рdf
  • xa_036.рdf
  • xa_037.pdf
  • send_mail_data.vbs.txt
  • send_mail_text.vbs.txt
  • subdomen_scan.wsf.txt

Стоит помнить, что для параметра [имя_файла] нельзя задать через запятую собственную цепочку. Теперь для разминки, осуществим поиск файла через командную строку с расширением pdf. Для этого пропишем:

Dir d:test*.pdf

После выполнения заданной команды, мы увидим только те документы, которые имеют расширение pdf.

Хорошо, продолжим рассмотрение ключей:

[/А[ [ : ]атрибуты] ] – использование данного ключа позволяет отфильтровать вывод списка по атрибутам, которые могут принимать следующие значения, их можно использовать совместно:

D – собственно, только папки

H – включает вывод только скрытых документов

S – включает вывод только системных документов

R – атрибут файла “только чтение”

A – атрибут файла “архивный”

— – данный префикс имеет значение НЕ

Если ключ отсутствует, то произойдет вывод всех файлов и папок, кроме тех, которые являются скрытыми и системными, если же данный параметр прописан без атрибутов, то произойдет вывод всех документов, включая скрытые и системные.

Примеры:

DIR C: /A:HS – вывод только тех, которые имеют атрибуты «скрытый» и «системный».

DIR С: /А:-Н – вывод всех, кроме скрытых.

DIR С: /A:D – выводим список всех каталогов

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

/S –просмотреть информацию не только из текущего каталога, но и из его подпапок

Ну, теперь для написания скрипта, который осуществит поиск файлов в командной строке, информации достаточно. Цель такова, написать батник (searchfiles.cmd) которому будут передаваться два аргумента: путь к диску или каталогу и шаблон, по которому будет происходить поиск файла через командную строку Windows. И так, смотрим на пример:

@If "%1"=="" (Set pathf=D:test) else (Set pathf=%1)

@If "%2"=="" (Set exmf=*.pdf) else (Set exmf=%2)

Dir %pathf%%exmf% /s

В первой строчке мы проверяем наличие первого аргумента, если он пуст, то, переменная pathf будет содержать путь по умолчанию D:test. Во второй – происходит проверка на второй аргумент и аналогично, при его отсутствии, переменная exmf получает значение по умолчанию *.pdf. В последней строчке будет происходить поиск файлов в командной строке по заданному шаблону.

Не стоит забывать, что сервер сценариев Windows Script Host для работы с каталогами использует объект Folder, который значительно превосходит по возможностям утилиту командная строка dir.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий для Fedor Отменить ответ

  1. Граммар-наци

    Правильно наравне, а не «на ровне».

    Ответить
  2. Fedor

    Прошу прощения у автора. Погорячился. Очень интересно и удобно, спасибо за подсказку. Не пользовался, теперь буду знать! Пожалуйста, когда технологию описывайте, указывайте системы! Для 7 и выше есть более подходящая команда — where. Для XP, 2003 сервер — как альтернатива findstr, да не плохо. Но в любом случае — альтернатива и не лишена удобства. Ещё раз прошу извинить — погорячился.

    Ответить