Рассмотрим возможности поиска файлов и текстовых данных в них с помощью CMD.
WHERE
Показывает расположение файлов, подходящих по шаблону.
WHERE [/R каталог] [/Q] [/F] [/T] шаблон
Без ключей WHERE ищет в текущем каталоге и в каталогах, указанных в переменной среды PATH.
Неизвестные символы в шаблоне можно заменить на * и ?
Например, my_????.* отберет все файлы, начинающиеся с my_, потом должно быть 4 любых символа, а расширение вообще может быть каким угодно сочетанием символов.
Можно подставить в шаблон путь для поиска или переменную среды, в которую записаны пути:
путь:шаблон
$имя_переменной:шаблон
/R Рекурсивный поиск и отображение файлов, соответствующих указанному шаблону, начиная с указанного каталога.
/Q Тихий режим - в командной строке ничего отображаться не будет, только ERRORLEVEL поменяется в зависимости от результата работы. Можно использовать в пакетных файлах для ветвления программы.
После выполнения в переменную ERRORLEVEL будет записан 0, если поиск был успешным, 1 - если безуспешным, и 2, если возникли ошибки.
/F Отображение найденных файлов в кавычках. Может пригодиться при записи результата поиска в переменную.
/T Отображение размера, даты и времени изменения для найденных файлов.
Теперь поищем текст в файлах.
FIND
Ищет текстовую строку в одном или даже нескольких файлах.
FIND [/V][/C][/N][/I][/OFF[LINE]] "строка" [[диск:][путь]имя_файла ...
"строка" Искомая строка. Задавать нужно обязательно в кавычках :)
Если путь для поиска не задан, выполняется поиск в тексте консоли либо в тексте, переданном другой командой. Например, можно отфильтровать результат работы других команд:
диск:путь\имя_файла Можно перечислить несколько файлов через пробел
Для примера создала пару файлов test_find.txt и test_find_2.txt, чтобы поискать в них строку "hello":
/N Вывод номеров отображаемых строк
/I Поиск без учета регистра символов
/C Вывод только общего числа строк, содержащих заданную строку
/V Вывод всех строк, НЕ содержащих заданную строку
/OFF[LINE] Не пропускать файлы с установленным атрибутом "Автономный". Важно, если работаете с сетевыми расположениями.
FINDSTR
Прокачанная версия FIND, имеющая больше опций для поиска строк.
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:файл]
[/C:строка] [/G:файл] [/D:список_папок] [/A:цвета] [/OFF[LINE]]
строки [[диск:][путь]имя_файла[ ...]]
/C:строка Использует заданную строку как искомую фразу поиска
/M Печатает только имя файла, в котором найдено совпадение
/S Поиск файлов в текущей папке и всех ее подпапках
/D:список_папок Поиск в списке папок (разделяются точкой с запятой)
/B Искать образец только в началах строк
/E Искать образец только в конце строк
/L Поиск строк дословно
/F:файл Читает список файлов из заданного файла (/ для консоли)
/G:файл Получение строк из заданного файла (/ для консоли)
/I Поиск без учета регистра
/R Поиск строк как регулярных выражений
Да, FINDSTR поддерживает регулярные выражения:
- . Любой символ
- * Повтор: ноль или более вхождений предыдущего символа или класса
- ^ Позиция в строке: начало строки
- $ Позиция в строке: конец строки
- [множество] Любой единичный символ из множества
- [^множество] Любой единичный символ не из множества
- [x-y] Любые символы из указанного диапазона
- \x Символьное обозначение служебного символа x
- \<xyz Позиция в начале слова
- xyz\> Позиция в конце слова
Пара примеров регулярок:
Слово начинается на w: /C:"\<[w]"
Слово оканчивается на w: /C:"[w]\>"
В слове есть ", " и дальше идет буква p, q, r, s, t, u, v, w: /C:", [p-w]"
/N Печатает номер строки, в которой найдено совпадение
/O Печатает найденные строки через пустую строку
/A:XY Две шестнадцатеричные цифры - атрибуты цвета фона и шрифта. "Подцветка" работает так же, как в команде COLOR
/X Печатает строки, которые совпадают точно
/V Печатает строки, не содержащие совпадений с искомыми
/P Пропускает строки, содержащие непечатаемые символы
/OFF[LINE] Не пропускать файлы с установленным атрибутом "Автономный". Важно, если работаете с сетевыми расположениями.
Предыдущие статьи цикла:
Можете также посмотреть Миниобзор программ-терминалов, там рассказывается об отправке и получении данных с COM-порта через CMD.
Можно проверять и активировать лицензию MS Office из CMD.
Можно даже мониторить температуру процессора стандартными средствами Windows (WMI) через CMD.