Программы для поиска из командной строки Windows 7

Ни для кого не секрет, что поиск Windows 7 - удобный и мощный инструмент. Его глубокая интеграция в Проводник, меню "Пуск", сохраняемые результаты и индексируемые расположения действительно позволяют экономить время, если что-то нужно быстро найти, открыть или запустить.
В недрах Windows 7 скрывается ряд консольных утилит для поиска, которые порой не менее эффективны при использовании в различных сценариях командной строки и могут сослужить вам добрую службу.

Первая программа, входящая в состав средств консольного поиска Windows 7, - find.

FIND

Программа find осуществляет поиск текстовой строки в одном или нескольких файлах. Синтаксис её таков:
[code]find [/опции] "строка для поиска" ДИСК:\Папка\ШаблонИмениФайла*.*[/code]
Программа find отличается от графического инструментария поиска Windows 7, что может искать текст во всех типах файлов, например, в DLL или EXE. Графические средства поиска Windows 7, как известно, текст в подобных файлах не ищут.

Программа find имеет следующий перечень опций, влияющих на её поведение и возможности:

  • find /V - вывод всех строк, НЕ содержащих заданную строку.
  • find /C - вывод только общего числа строк, содержащих заданную строку.
  • find /N - вывод номеров отображаемых строк.
  • find /OFF[LINE] - не пропускать файлы с установленным атрибутом "Автономный".
  • find /I - поиск без учета регистра символов.

Программа FINDSTR

Утилита findstr выглядит функционально расширенной версией программы find. Синтаксис их схож:
[code]findstr [/опции] "строка для поиска" ДИСК:\Папка\ШаблонИмениФайла*.*[/code]
Однако, findstr поддерживает сразу несколько шаблонов имени файлов и несколько поисковых строк, которые нужно разделять пробелами. Кроме того, findstr поддерживает работу с регулярными выражениями. Опции при работе с ней таковы:

  • /B - искать указанную строку-образец только в начале строк.
  • /E - искать указанную строку-образец только в конце строк.
  • /L - поиск строк дословно, т.е. в точном соответствии с введенной фразой
  • /R - искать указанную строку-образец с использованием регулярных выражений.
  • /S - поиск файлов в текущей папке и всех ее подкаталогах.
  • /I - поиск будет вестись без учета регистра.
  • /X - выводить строки, которые совпадают точно.
  • /V - выводить строки, не содержащие совпадений с искомыми.
  • /N - выводить номер строки, в которой найдено совпадение.
  • /M - выводить только имя файла, в котором найдено совпадение.
  • /O - выводить найденные строки через пустую строку.
  • /P - пропуск строки, содержащей непечатаемые символы.
  • /OFF[LINE] - искать в файлах с установленным атрибутом "Автономный".
  • /A:цвета - две шестнадцатеричные цифры - атрибуты цвета вида (Цвет фона)(Цвет текста). Список цветов таков:
    0 = Черный 8 = Серый
    1 = Синий 9 = Светло-синий
    2 = Зеленый A = Светло-зеленый
    3 = Голубой B = Светло-голубой
    4 = Красный C = Светло-красный
    5 = Лиловый D = Светло-лиловый
    6 = Желтый E = Светло-желтый
    7 = Белый F = Ярко-белый

    Совет: Выполните команду Color /?, чтобы узнать, как устанавливать цвета в окне команд.

  • /F:файл - Читает список файлов из заданного файла (/ для консоли).
  • /C:строка - Использует заданную строку как искомую фразу поиска.
  • /G:файл - Получение строк из заданного файла (/ для консоли).
  • /D:список_папок - Поиск в списке папок (разделяются точкой с запятой).

Краткая сводка по синтаксису регулярных выражений:

  • . - любой символ.
  • * - ноль или более вхождений предыдущего символа или класса
  • ^ - начало строки
  • $ - конец строки
  • [класс] - набор символов: любой символ из перечисленных в скобках
  • [^класс] - обратный класс символов: любой символ из НЕ перечисленных в скобках
  • [x-y] - любые символы из указанного диапазона, например [a-b]
  • \x - служебный символ х: \t - табуляция, \n - начало строки
  • \?xyz - позиция в слове: в начале слова
  • xyz\> - позиция в слове: в конце слова

Примеры использования:
[code]findstr /I windows microsoft.txt[/code]
Поиск всех слов "windows" без учёта регистра в файле microsoft.txt
[code]findstr /s /i /m "\<microsoft\>" *.txt[/code]
Построить список txt-файлов в текущем каталоге и его подкаталогах, содержащий слово "microsoft", игнорируя регистр.
[code]findstr "Привет от штиблет" file.txt[/code]
Поиск слов "Привет", "от" и "штиблет" в файле file.txt с учётом регистра.
[code]findstr /C:"Привет от штиблет" file.txt[/code]
Поиск фразы "Привет от штиблет" в файле file.txt с учётом регистра.

Программа WHERE

И последняя программа, на которую мне бы хотелось обратить ваше внимание, это where. Она выполняет поиск файла по указанному шаблону его имени. Синтаксис в общем случае таков:
[code]where Каталог:шаблон[/code]
Для случая, когда каталог не указан, поиск файлов осуществляется в текущем каталоге и в каталогах, указанных в переменной окружения PATH.

Например,
[code]WHERE "c:\windows:*.exe"[/code]
Поиск исполняемых файлов в каталоге c:\Windows

Каталогов для поиска может быть указано несколько, для этого применяется конструкция вида:
[code]where c:\windows;c:\windows\system32:*.txt[/code]
При этом можно использовать только один шаблон.

Параметры программы Where:

  • /R - рекурсивный поиск и отображение файлов, соответствующих указанному шаблону, начиная с указанного каталога. При использовании опции /R можно использовать несколько шаблонов, но для одного каталога. Синтаксис таков:
    [code]where  /R c:\windows *.txt *.wav[/code]
  • /Q - интересная опция с точки зрения использования в командных файлах. При её указании утилита переходит в тихий режим, списка файлов не выводит, но устанавливает код возврата, указывающего на результат её выполнения. Считать код возврата можно из переменной окружения %ERRORLEVEL%.
    • %ERRORLEVEL%=0 - поиск успешен/файлы найдены
    • %ERRORLEVEL%=1 - ничего не найдено
    • %ERRORLEVEL%=2 - поиск завершен с ошибками

  • /F - отображение найденных файлов в кавычках.
  • /T - отображение размера, даты и времени изменения для всех найденных файлов.

Отмечу, что в качестве шаблона пути можно использовать переменные окружения, вот так:
[code]where $path:*.exe
where $windir:*.exe
where $windir:*.exe
where $temp:*.tmp[/code]
Микрософт не рекомендует использовать рекурсивный поиск при наличии переменных окружения в командной строке where. Полагаю, из-за вероятности повторения результатов и замедления работы поиска.

2 ответа к “Программы для поиска из командной строки Windows 7”

    1. А тебя не смутило название статьи: Поиск для Windows 7.
      Нафига сюда писать то, что не работает?

Обсуждение закрыто.

css.php