Пакетный однострочный для поиска файлов с подстановочным знаком каталога

Рассмотрим следующую структуру каталогов

- Temp\
- Temp\DirA\
- Temp\DirA\Content\
- Temp\DirA\Content\file.txt
- Temp\DirB\
- Temp\DirB\Content\
- Temp\DirB\Content\file.txt

Теперь я хочу перечислить все текстовые файлы внутри каталогов содержимого в одной строке. Я ожидал бы что-то вроде этого, чтобы работать:

dir Temp\*\Content\*.txt

но это не так (это дает синтаксическую ошибку). Даже forfiles возвращает пустой результат. Есть ли удобный способ добиться этого?

Обратите внимание: моя команда в реальном мире будет содержать несколько подстановочных знаков. Я не хочу объединять каталог foreach с файлом foreach.

1 ответ

Решение

Использовать рекурсивный dir /s и фильтровать вывод по \Content\:

dir /s /b Temp\*.txt Temp\*.log | find "\Content\"

И в случае, если вам не нужно перечислять файлы в Content\other_folder\ используйте регулярное выражение:

dir /s /b Temp\*.txt Temp\*.log | findstr /r "\\Content\\[^\\]*$"
Другие вопросы по тегам