Número total de arquivos em um volume NTFS?

6

Estou procurando uma maneira rápida de contar o número total de arquivos - e diretórios - em qualquer volume NTFS. (De maneira ad-hoc. Isto é, dada qualquer caixa aleatória, não um volume especialmente preparado.)

Nota: Isso não é sobre arquivos por diretório, apenas a quantidade total de arquivos no volume.

Atualmente, a única maneira que sei é abrir a pasta raiz de uma unidade no Windows Explorer e selecionar todos os elementos, clique com o botão direito para escolher Propriedades e aguarde (até que o explorador conte todos os elementos.

Existe uma maneira melhor / mais rápida?

    
por Martin 20.04.2011 / 09:35

3 respostas

8

No prompt do DOS, digite o seguinte comando:

  • dir \ / s / a / w

(A opção "/ s" habilita uma busca recursiva em todos os subdiretórios {com a maioria dos utilitários Unix este é normalmente o comutador "-R"}, o comutador "/ a" conta todos os arquivos independentemente dos Atributos, e o "/ w" exibe várias entradas em uma única linha para que o relatório seja concluído um pouco mais rápido. Altere "\" para o caminho desejado que você deseja iniciar; para uma letra de unidade diferente, como a unidade D :, altere para "D: \" para pesquisar essa unidade.

Uma vez terminado, você retornará o prompt e, em seguida, as duas últimas linhas de saída revelarão uma contagem do número total de arquivos e do número total de diretórios. Se você estiver procurando pelo número total de entradas de nome de arquivo, basta adicionar esses dois números juntos, caso contrário, o número total de arquivos é tudo o que você precisará.

    
por 20.04.2011 / 09:43
7

Se você quer apenas um limite superior (aproximação):

Digite fsutil fsinfo ntfsinfo C: no prompt de comando, leia o valor Mft Valid Data Length e divida-o por 1024. Esse número pode ser muito grande, mas não pode ser muito pequeno.

Se você precisa de um valor exato, existem maneiras mais rápidas, mas você precisa programar algo (eu não sei de nenhum programa lá fora que faça isso com precisão) ... você precisaria ler o $ MFT arquivar e analisar manualmente, depois descobrir quais são entradas de arquivo e quais não são entradas de arquivo ... é muito mais rápido do que a abordagem "de cima para baixo" do Windows (porque construir a hierarquia de baixo para cima usa apenas a MFT e nada mais), mas não é fácil.

Se você é um programador, mas deseja uma maneira menos dolorosa (embora mais lenta), também pode escrever um programa que chame NtQueryDirectoryFile para percorrer as pastas em vez das funções FindFirstFile / FindNextFile padrão. .. pode ser muito mais rápido, mas um pouco mais complicado.

Apenas esteja ciente de que a noção de um "arquivo" em si é realmente bastante complicada. É bem possível (e o Windows até faz isso por padrão) ter múltiplos hardlinks para o mesmo arquivo, e ambos são tão "reais" quanto qualquer outro arquivo ... você os conta uma ou duas vezes?

Ou você pode ter junções ou links simbólicos que apontam para outros lugares ... devem ser contados ou não?

Não é um processo claro como pode parecer a princípio, então esteja ciente disso.

Espero que tenha ajudado ..

Editar

Você pode correr

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

e, em seguida, inspecione a estatística "Arquivos" exibida. : P

    
por 20.04.2011 / 09:57
3

A resposta simples é; faça o download Everything . Isso conta para você, super rápido. Também faz pesquisas em tempo real para você. É freeware e não contém nenhuma crapola extra.

    
por 20.04.2011 / 10:02

Tags