Если вы просто хотите верхнюю границу (приближение):
Введите в 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"
и затем проверьте статистику "Файлы", которая показана. :П