6

Я ищу быстрый способ подсчета общего количества файлов и каталогов на любом томе NTFS. (По-особенному. То есть, учитывая любую случайную коробку, а не специально подготовленный том.)

Примечание. Речь идет не о файлах в каталоге, а об общем количестве файлов на томе.

В настоящее время я знаю только один способ - открыть корневую папку диска в проводнике Windows, выбрать все элементы, щелкнуть правой кнопкой мыши, чтобы выбрать «Свойства», и затем ждать (и ждать), пока проводник не подсчитает все элементы.

Есть ли лучший / более быстрый способ?

4 ответа4

8

В командной строке DOS введите следующую команду:

  • dir \ /s /a /w

(Ключ «/s» обеспечивает рекурсивный поиск по всем подкаталогам {в большинстве утилит Unix это обычно ключ «-R»}, ключ «/a» считает все файлы независимо от атрибутов, а «/w») msgstr "отображает несколько записей в одной строке, чтобы отчет заканчивался немного быстрее. Измените "\" на желаемый путь, с которого вы хотите начать; для другой буквы диска, например диска D:, измените его на «D:\», чтобы найти этот диск.)

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

8

Если вы просто хотите верхнюю границу (приближение):

Введите в fsutil fsinfo ntfsinfo C: прочитайте значение Mft Valid Data Length и разделите его на 1024. Это число может быть слишком большим, но оно не может быть слишком маленьким.

Если вам нужно точное значение, есть более быстрые способы, но вам нужно что-то запрограммировать (я не знаю ни одной программы, которая точно это делает)... вам нужно прочитать файл $ MFT и разобрать вручную, затем выясните, какие из них являются записями файлов, а какие - не файловыми ... это значительно быстрее, чем подход Windows "сверху вниз" (потому что построение иерархии снизу вверх использует только MFT и ничего больше), но это не так просто.

Если вы программист, но вам нужен менее болезненный (хотя и более медленный) способ, вы также можете просто написать программу, которая вызывает NtQueryDirectoryFile для обхода папок вместо функций по умолчанию FindFirstFile/FindNextFile ... это может быть намного быстрее, но немного сложнее.


Просто имейте в виду, что само понятие "файл" на самом деле довольно сложно. Вполне возможно (и Windows даже делает это по умолчанию) иметь несколько жестких ссылок на один и тот же файл, и оба они так же "реальны", как и любой другой файл ... Вы считаете их один или два раза?

Или вы можете иметь соединения или символические ссылки, которые указывают на другие места ... должны ли они быть подсчитаны или нет?

Это не четкий процесс, как может показаться на первый взгляд, так что имейте это в виду.

Надеюсь, что помог ..


редактировать

Вы могли бы бежать

 robocopy /L /E C:\ C:\Temp > "%Temp%\Temp.log"

и затем проверьте статистику "Файлы", которая показана. :П

3

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

0

Я обнаружил, что команда chkdsk работает лучше всего, из командной строки DOS.

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