Список всех файлов во всех подпапках

33

В Windows есть ли способ получить список всех файлов в папке, включая все файлы во всех подпапках?

Эдвард Вонг Хау Пепелу Тивруск
источник

Ответы:

37

Список всех файлов рекурсивно

C: \> dir / s

Чтобы сохранить их в файл

C: \> dir / s /b>filelist.txt

Просматривайте их страницу за раз

C: \> dir / s | Больше

Nifle
источник
3
Ну, ладно ... Это тоже сработает. Просто интересно, почему никто не использует стандартную функцию поиска Windows для этого. :-)
Вим тен Бринк
2
@Workshop Алекс: Потому что 1) рекурсив dirнемного быстрее, если не нужно проверять какие-либо условия; 2) позволяет сохранить имена в файл.
Гравитация
4
@WimtenBrink: а как вы собираетесь отправлять поиск Windows другому пользователю?
Адольф Чеснок
1
Вам не нужно
передавать
3
Поскольку в вопросе не упоминаются каталоги, так и должно быть dir /a-d /b /s.
Jiggunjer
15

Попробуйте дерево / ф. Это должно вывести всю структуру.

Алекс
источник
1
Который будет отображаться как дерево, а не как список.
Джои
Вы не думаете, что ОП посчитает этот результат списком?
HyperSlug
2
Я думал, что команда дерева будет иметь лучшее форматирование, что позволит вам четко видеть уровень вложенных папок.
Алекс
у него действительно лучшая структура. это может быть сохранено как текстовый файл или файл HTML?
Xypha
попробовал tree /f>filelist.txtи это сработало.
xypha
5

Вы получите UnixUtils на sourceforge , который вам даст find.exe.

Затем вы можете сделать следующее для получения списка всех файлов с путями к папкам.

cd Path\to\folder
find.exe . -type f

Существуют и другие формы команды Unix, которые могут быть вам полезны.
Вывод более удобен для поиска по сравнению с нативом dirи treeкомандами.


Обновлено с входом от Johannes.
В cmd.exeоболочке

dir /b /s

работает довольно хорошо для рекурсивного листинга в отформатированной форме Widows
(так что вы видите " C:\" и обратные косые черты, ' \').
Я полностью пропустил " \b" в Nifleответе! (+1 за это сейчас).

Nik
источник
Не нужно ничего устанавливать здесь, так как на dirэто прекрасно способны.
Джои
1
@ Йоханнес, вы сравнивали findвыход Unix с DOS dir /sили treeв этом отношении?
Ник
1
Вы когда-нибудь использовали dir /b? :-)
Джои
@ Йоханнес, на самом деле я не могу вспомнить, делал ли я это в DOS 6,22 дня. findС Cygwin я привык к тому , что никогда не пробовал команды dos (на самом деле мне потребовалось время, чтобы открыть cmdоболочку и не /usr/bin/dirпопробовать эту опцию. Но она работает; рад узнать, что это:-)
nik
2

Почему так сложно? Нажмите клавишу Windows + F, чтобы запустить «Поиск файлов» в Windows. Слева, перейдите к «Искать в» и выберите опцию внизу под названием «Обзор ...». Выберите (под) папку, в которой вы хотите выполнить поиск. Введите «*» (без кавычек) в поле «Все или часть имени файла» и начните поиск. Выпейте кофе, когда вы будете искать на большом диске с большим количеством данных, и просто подождите, пока поисковая система на основе проводника покажет вам полный список. Вы можете искать его, открывать файлы напрямую и даже сузить область поиска при необходимости.

Почему люди забывают это поисковое поведение по умолчанию в Windows?

Вим тен Бринк
источник
3
потому что это не 1337? :-)
Natrium
13
Например, вам будет трудно получить это в текстовом файле.
Джои
Правда, но зачем кому-то это нужно в текстовом файле? :-)
Вим тен Бринк
2
Обратите внимание, что это (по крайней мере, в Win XP) будет искать все файлы ZIP во всех подпапках. Который будет ужасно медленным. Что, вероятно, не то, что вы хотите. Который не может быть легко выключен. Если нет файлов ZIP, я согласен, что это лучший подход.
Мартин
@Wim: ваш 5-шаговый процесс (Win + F, Browse, Subfolder, *, Start) намного медленнее, чем просто набирать «dir / s» (для машинистки, которая печатает более 100 слов в минуту и ​​привыкла делать что-то в командной строке, поэтому он часто предварительно открывается). Кроме того, упомянутый вами процесс изменил версии с Windows, в то время как «dir / s» был последовательным. Кроме того, ваш процесс требует нажатия Win + F, что не всегда легко. Иногда, даже если на клавиатуре есть клавиша Windows, эту клавишу может быть сложнее использовать, например, в сценариях удаленного доступа, где клавиша может использоваться локальным компьютером вместо удаленного
TOOGAM
1

Я считаю этот командный файл полезным

DragDropListFile.bat

@ECHO OFF
SET targetPath="%~1"
SET ToolPath=%~dp0

dir %targetPath% /b /s /a-d > "%ToolPath%list.txt"

Использование: Просто перетащите папку и поместите ее в файл DragDropListFile.bat, затем создайте файл с именем list.txt, который содержит то, что вы хотите.

Если вам не нравится перетаскивание, попробуйте этот командный файл

ListFile.bat

ECHO OFF

SET crtPath=%~dp0

dir "%crtPath%" /b /s /a-d > list.txt

Использование: поместите файл ListFile.bat в папку, в которую вы хотите составить список файлов, затем запустите файл ListFile.bat, затем создайте файл с именем list.txt, который содержит то, что вы хотите.

123iamking
источник
0

dir /s /w >files.txtдадут вам большую часть пути туда. Это сохранит расширения. Затем откройте files.txtв текстовом редакторе и либо

  • отсортировать все строки и удалить лишние
  • или удалите их с помощью операции поиска и замены или 2.
    • Регулярное ^ +\d+ File.+\r\n\r\n Dir.+\r\n\r\nрешение избавило меня от пропусков и сведений о папках между списками файлов отдельных папок для меня в Notepad ++.
  • Затем просто обрежьте верх и хвост текстового файла.
CAD CAD
источник