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


Ответы:


37

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

C: \> dir / s

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

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

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

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


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 за это сейчас).


Не нужно ничего устанавливать здесь, так как на 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, который содержит то, что вы хотите.


0

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

  • отсортировать все строки и удалить лишние
  • или удалите их с помощью операции поиска и замены или 2.
    • Регулярное ^ +\d+ File.+\r\n\r\n Dir.+\r\n\r\nрешение избавило меня от пропусков и сведений о папках между списками файлов отдельных папок для меня в Notepad ++.
  • Затем просто обрежьте верх и хвост текстового файла.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.