Numero totale di file su un volume NTFS?


6

Sto cercando un veloce modo di contare il numero totale di file e directory su qualsiasi volume NTFS. (In un modo ad-hoc. Ovvero, data una casella a caso, non un volume appositamente preparato).

Nota: questo è non sui file per directory, solo la quantità complessiva di file sul volume.

Attualmente, l'unico modo che conosco è di aprire la cartella principale di un'unità in Esplora risorse, selezionare tutti gli elementi, fare clic con il tasto destro per scegliere Proprietà e quindi attendere (e attendere) finché Explorer non ha contato tutti gli elementi.

C'è un modo migliore / più veloce?

Risposte:


8

Al prompt di DOS, digitare il seguente comando:

  • dir \ / s / a / w

(L'opzione "/ s" abilita una ricerca ricorsiva su tutte le sottodirectory {con la maggior parte delle utility Unix, di solito è l'opzione "-R"}, l'opzione "/ a" conta tutti i file indipendentemente dagli attributi e "/ w "visualizza più voci su una singola riga in modo che il report finisca un po 'più velocemente." \ "cambia il percorso da cui desideri iniziare, per una lettera di unità diversa, come l'unità D:, cambiala in" D " : \ "per cercare quell'unità.)

Una volta terminato, verrà restituito il prompt, quindi le ultime due righe di output visualizzeranno un conteggio del numero totale di file e del numero totale di directory. Se stai cercando il numero totale di voci di nome file, aggiungi semplicemente quei due numeri insieme, altrimenti il ​​numero totale di file è tutto ciò di cui hai bisogno.


Grazie! Questo ha funzionato molto bene e sembra molto meglio della finestra di dialogo traballante. Inoltre, sembrava abbastanza veloce (abbastanza).
Martin

@ Martin: Uno strumento che trovo particolarmente utile (e un notevole risparmio di tempo per l'amministrazione del file system), che sospetto probabilmente lo sarà anche tu, è il FAR Manager gratuito e open source, che è stato fortemente ispirato da Norton Commander per DOS. Si tratta di un'applicazione nativa a 32 bit / 64 bit Windows che utilizza effettivamente la modalità testo (senza grafica) e presenta alcune funzioni che conteranno anche file e directory (premi CTRL-Q per contare i totali per i file evidenziati / selezionati / directory): farmanager.com
Randolf Richardson

@Randolf: Eccezionale! MrGreen Ricordi di giorni "migliori". Dovrò provarlo con PsExec !
Martin

8

Se vuoi solo un limite superiore (approssimazione):

Digitare fsutil fsinfo ntfsinfo C: nel prompt dei comandi, leggere il Mft Valid Data Length valore e dividerlo per 1024. Questo numero potrebbe essere troppo grande, ma non può essere troppo piccolo.

Se hai bisogno di un valore esatto, ci sono modi più veloci ma devi programmare qualcosa (non conosco nessun programma là fuori che lo faccia esattamente) ... dovresti leggere il file $ MFT e analizzare a mano, quindi capire quali sono le voci del file e quali sono voci non file ... è drammaticamente più veloce dell'approccio "top-down" di Windows (perché la costruzione della gerarchia bottom-up usa solo la MFT e nient'altro) , ma non è per niente facile.

Se sei un programmatore ma vuoi un modo meno doloroso (anche se più lento), puoi anche solo scrivere un programma che chiama NtQueryDirectoryFile per attraversare le cartelle invece del valore predefinito FindFirstFile / FindNextFile funzioni ... può essere molto più veloce ma un po 'più complicato.


Basta essere consapevoli che la nozione di "file" stesso è in realtà abbastanza complicata. È abbastanza possibile (e Windows lo fa anche di default) avere più collegamenti fissi allo stesso file, ed entrambi sono altrettanto "reali" di qualsiasi altro file ... li contate una o due volte?

Oppure puoi avere giunzioni o collegamenti simbolici che puntano ad altri luoghi ... dovrebbero essere contati o no?

Non è un processo chiaro come potrebbe sembrare all'inizio, quindi sii consapevole di ciò.

Spero che questo abbia aiutato


modificare

Potresti correre

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

e poi ispezionare la statistica "Files" che viene mostrata. : P


Re "nozione di un \" file \ "": Tecnicamente, anche le directory sono file.
grawity

Io credo con limitazioni del file system , questo è più valido della risposta attualmente più alta, poiché si interfaccia direttamente con il sottosistema del file system, non solo i risultati presentati di dir. Qualcun altro ha un'opinione? Inoltre, non è meglio affermare: (Mft Valid Data Length)/(Bytes per FileRecord segment)?
mbrownnyc

Sembra che Valid Data Length debba essere considerato come ... In NTFS, there are two important concepts of file length: the end-of-file (EOF) marker and the Valid Data Length (VDL). The EOF indicates the actual length of the file. The VDL identifies the length of valid data on disk. Any reads between VDL and EOF automatically return 0 in order to preserve the C2 object reuse requirement. ( fonte )
mbrownnyc

Se EOF i produttori segnano la fine del file, la dimensione VDL deve essere inferiore alla dimensione del file. Ma questo non si allinea affatto al dir metodo contrassegnato come la risposta (in una prova, vedo una differenza di 1573080 tra i due metodi, con (Mft Valid Data Length)/(Bytes per FileRecord segment) essendo il più alto dei due). Come in, se dovessimo considerare la lunghezza totale dei dati su un disco maggiore di Mft Valid Data Length, quindi questo numero sarebbe ancora più grande e molto meno riflettente del numero di file vero.
mbrownnyc

3

La semplice risposta è; Scaricare Qualunque cosa . Conta per te, super veloce Effettua anche ricerche ~ in tempo reale per te. È freeware e non contiene crapola extra.


0

Ho trovato il comando chkdsk per funzionare al meglio, fatto da un prompt dos.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.