4

Мой поиск в Windows 7 довольно медленный на одном компьютере и быстрый на другом. Я выяснил, что на одном компьютере проиндексировано 90 000 файлов, а на другом 1,5 миллиона.

Поэтому я хотел бы найти самые большие папки по количеству файлов, поскольку некоторые из них обязательно будут неактуальными и исключать их.

У меня есть инструменты для поиска самых больших папок по размеру данных, но не по количеству файлов внутри. Есть идеи?

4 ответа4

7

Если вы использовали Windows XP, вы могли бы использовать расширение оболочки Размер папки, которое дает вам несколько столбцов, которые вы можете добавить в Проводник, чтобы показать размер папки, а также количество файлов / папок / обоих, содержащихся в ней, таким образом позволяя вам просматривать и сортировать их прямо в проводнике.

К сожалению, в Vista и более поздних версиях отказались от API-функций, используемых в Folder Size и аналогичных программах, поэтому они больше не работают.

Вместо этого вам придется использовать не-расширение оболочки. К счастью, есть несколько программ, которые могут довольно хорошо визуализировать использование пространства в файловой системе.

Большинство из них имеют несколько различных режимов, включая текстовый список / дерево (как в Проводнике), круговую диаграмму и древовидную карту, в которой файлы и подкаталоги представлены квадратами или прямоугольниками. Должна быть опция для отображения количества файлов / папок в дополнение к размеру, обычно в режиме текстового списка / дерева. Иногда, чтобы узнать количество файлов / папок, вам нужно выбрать папку и просмотреть ее свойства (что менее удобно, но все же проще, чем вручную в Проводнике).

Вот некоторые из самых популярных (некоторые бесплатные, другие условно-бесплатные):

3

И еще один, TreeSize Free. (На этом снимке каталоги названы 0-F.)

2

Один быстрый способ получить отсортированный список папок по количеству файлов - включая подпапки - это:

PowerShell 3+

$a=@{}
Get-ChildItem 'D:\' -Recurse -Directory -ErrorAction Ignore | Foreach {
    $a[$_.Fullname] = (Get-ChildItem $_.Fullname -Recurse -File -ErrorAction Ignore).Count
} 
$a.GetEnumerator() | Sort Value -Descending | Format-List

Пример вывода

Для тех, кому интересно как это работает

  • Get-ChildItem 'D:\' -Recurse -Directory проходит по всем подпапкам данного каталога. Изменить путь к вашим потребностям
  • В каждой подпапке используйте (Get-ChildItem $_.Fullname -Recurse -File).Count для подсчета количества файлов, включая файлы в подпапках. Папки сами по себе не учитываются. Только файлы делают.
  • Для каждой подпапки добавьте новую запись в хеш-таблицу $a[$_.Fullname] = myValue с текущим каталогом в качестве имени. В качестве значения добавьте наши ранее упомянутые файлы
  • После того, как вся работа сделана, используйте $a.GetEnumerator() разбивает хеш-таблицу обратно на несколько элементов и передает их в команду Sort-Object которая сортирует хеш-таблицу по значению и возрастанию
1

Я использую программу под названием windirstat, которая просматривает все файлы и папки на диске и дает хорошее графическое отображение того, какие файлы или папки занимают больше всего места. Затем вы можете переместить или удалить ненужные файлы и привести в порядок свой диск.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .