Меню Рубрики

Поиск файла через командную строку windows

Утилита 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.

Спасибо за внимание. Автор блога Владимир Баталий

Источник

Поиск файлов через командную строку

У многих людей командная строка ассоциируется с «древними» приложениями DOS. Тем не менее, в процессе оптимизации командная строка может стать вашим лучшим другом. К примеру, с помощью утилиты FindStr вы очень быстро найдете интересующие вас файлы. Однако к достоинствам FindStr относится не только высокая скорость, но и низкое потребление ресурсов, в том числе ресурсов процессора, оперативной памяти и дискового пространства.

Зачастую утилиты командной строки могут решать задачи, которые невозможно решить средствами утилит графического интерфейса, по крайней мере, без значительных усилий. Так, вы можете сравнить содержимое двух файлов при помощи графической утилиты, но команда Comp сделает это быстрее. Кроме того, графические утилиты трудно использовать в сценариях, а также включать в командные файлы для параллельного выполнения нескольких задач. Утилиты командной строки в этом отношении прекрасно себя зарекомендовали.

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

Как выполнить команду

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

  1. Откройте проводник.
  2. Вызовите диалоговое окно Свойства папки с помощью команды Сервис — Свойства папки.
  3. Перейдите на вкладку Типы файлов и найдите в списке пункт Папка — только не перепутайте его с пунктом Папка с файлами.
  4. Щелкните на кнопке Дополнительно. На экране появится диалоговое окно Изменение свойств типа файлов. Это окно позволяет добавлять новые команды к определенным типам файлов, включая системные типы, такие как папки.
  5. Щелкните на кнопке Создать. Вы увидите диалоговое окно Новое действие, в котором будет нужно ввести имена действия и реализующей его команды.
  6. Введите в поле Действие текст Командная строка.
  7. Введите в поле Приложение, исполняющее действие команду cmd.exe /k \ «cd %1\». Аргумент /k предписывает программе cmd.exe выполнить команду и оставить свое окно открытым. В данном случае задана команда перехода в папку (cd), а в роли папки выступает текущая папка (%1).
  8. Трижды щелкните на кнопке ОК, чтобы закрыть диалоговые окна Новое действие, Изменение свойств типа файлов и Свойства папки.

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

Источник

Поиск текста в файлах через командную строку Windows

Недавно мы рассматривали поиск файлов через командную строку Windows. Сегодня поговорим о том, как найти внутри файлов нужный нам текст. Сделать это можно при помощи команды FIND.

Команда find сообщает имена файлов, в которых был найден искомый файл, и выводит строки, в которых он содержится.

Синтаксис команды find :

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] «искомый_текст» [путь_к_файлу]

V — вывод всех строк, НЕ содержащих искомый текст;

C — вывод только общего числа строк, содержащих искомый текст;

N — вывод номеров строк;

I — поиск без учёта регистра символов;

OFF[LINE] — не пропускать файлы с атрибутом «автономный».

Для примера проверим все текстовые файлы в каталоге C:\test\ на наличие слова «текст».

Если посмотреть на скриншот ниже, то можно подумать, что ни один из файлов не содержит слова «текст». Конечно, это вполне допустимый вариант. Но есть и другое объяснение.

Дело в том, что по умолчанию текст в командной строке Windows отображается согласно кодовой странице CP866, а в файлах он в кодовой странице CP1251. Поэтому нам достаточно сменить кодовую страницу в текущем окне командной строки. О том, как это сделать, можно прочитать в статье по этой ссылке.

Теперь мы видим, что слово «текст» встречается во всех трёх файлах.

Теперь посмотрим на строки, в которых нет слова «текст»:

Такие оказались только в файле FILE_1.TXT.

Помните, что команда find по умолчанию учитывает регистр. Поэтому, написав в ней «Текст», мы не найдём подобного слова в файлах. Но регистр можно и проигнорировать:

На скриншоте ниже хорошо видно, что сперва команда не нашла слова «Текст» в файлах, так как в них оно записано без заглавных букв. Добавив /i , мы это исправили.

Допустим, нам нужно знать порядковые номера строк, в которых отсутствует слово «текст»:

Если мы захотим знать число строк, в которых присутствует искомое слово, тогда выполним команду:

А если нам нужно знать число строк, где это слово отсутствует, тогда пример команды такой:

Хотя до этого в примерах мы искали отдельное слово, find спокойно ищет и выражения:

Особенностью команды find является то, что искомый текст обязательно нужно заключать в кавычки. Это приводит к трудностям, если в пути к файлам (и в именах файлов) содержится пробел. В таком случае нужно воспользоваться перенаправлением ввода, но только если мы ищем в конкретном файле.

Как видите, наличие пробела в имени каталога C:\test test\ не помешало осуществить поиск. Но это что касается поиска в файле file_1.txt. А вот попытка поискать сразу во всех файлах привела к ошибке.

В таком случае можно воспользоваться циклическое обработкой, к примеру, командой for :

Помните, что в этом случае в командной строке нужно использовать конструкции вида %a, а в файлах .bat и .cmd вида %%a.

До этого в примерах мы всегда указывали в каких файлах искать. Если этого не сделать, то команда find выполняет поиск в тексте консоли или в тексте, который был передан по конвейеру другой командой.

Для следующего примера вернём кодовую страницу CP866. После этого отсортируем вывод команды ipconfig /all — оставим только те строки, где содержится слово «Состояние»:

Здесь мы лишь пробежались по вершинам, но возможности команды find гораздо больше. Особенно, если использовать её в комплексе с другими командами.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Поиск файла по слову в тексте в windows 7
  • Поиск файла по дате изменения windows 10
  • Поиск файла в windows 7 по слову в файле
  • Поиск установленных систем windows очень долго
  • Поиск украденного телефона windows phone