Как можно в командной строке Windows получить список файлов, которые соответствуют заданной маске?

Можете предложить команду, которая будет искать файлы по маске в подкаталогах и выводить результаты в виде простого списка, с полным путем и по одному файлу в строке? Я знаю, что команда `where` хорошо справляется с этой задачей, но не поддерживает маски файлов. В то же время команда `dir /s` работает с масками, но выводит много лишней информации, которую нужно фильтровать. Буду признателен за решение в виде одной команды или bat-файла с необходимым парсингом.
  • 24 декабря 2024 г. 11:03
Ответы на вопрос 4
Вы можете использовать команду `dir` с определенными параметрами, чтобы получить список файлов, соответствующих заданной маске, в подкаталогах и отформатировать вывод. Для фильтрации лишней информации вы можете подключить команды `findstr` и использовать перенаправление. Вот пример команды:

```cmd
dir /s /b "C:\путь\к\директории\*.маска" | findstr /v /c:"дата" /c:"времени" /c:"<DIR>"
```

Параметры команды:
- `/s` — ищет файлы во всех подкаталогах;
- `/b` — выводит только полные пути без других дополнительных данных;
- `"C:\путь\к\директории\*.маска"` — паттерн для поиска;
- `findstr` — фильтрует вывод, исключая строки, содержащие слова "дата", "времени" и "<DIR>", чтобы убрать лишнюю информацию.

Для регулярного использования вы можете создать `bat`-файл с этой командой. Вот пример содержимого такого файла, сохраненного с расширением `.bat`:

```bat
@echo off
setlocal
set "searchDir=C:\путь\к\директории"
set "fileMask=*.маска"
dir /s /b "%searchDir%\%fileMask%" | findstr /v /c:"дата" /c:"времени" /c:"<DIR>"
endlocal
```

Замените `C:\путь\к\директории` и `*.маска` на ваши нужные значения. После выполнения этого бат-файла вы получите список файлов, соответствующих заданной маске.
В итоге сделал так: 
dir /s /b "маска"

Спасибо Aragorn за подсказку.
Может так dir /s /b | findstr /R /C:"маска" ?
Get-ChildItem -Path "C:\Path\To\Search" -Recurse -Filter "*.*" | ForEach-Object { $_.FullName }
Похожие вопросы