Como contar rapidamente o número de arquivos em uma pasta?

2

Em um servidor Windows 2003, tenho um aplicativo que processa solicitações e as armazena em uma pasta como uma fila, onde um segundo processo chega e processa essas solicitações armazenadas. No entanto, às vezes, o número de arquivos tende a atingir 100.000.

Usar o Windows Explorer ou até mesmo dir no prompt de comando não parece ser uma grande solução para eu descobrir quantos arquivos estão armazenados. Também leva muito tempo, CPU e E / S.

Alguma sugestão?

    
por Andrei Rinea 16.06.2009 / 12:41

3 respostas

0

Bem, neste caso, se não houver utilitários integrados que possam ajudar, escrevi este pequeno bugger:

usando o sistema; usando System.IO;

namespace FileCount
{
    class Program
    {
        static void Main(string[] args)
        {
            var files = Directory.GetFiles(".");
            Console.Write(files.Length);
        }
    }
}

mas eu esperava não ter que fazer isso. Obrigado a todos vocês:)

Atualização: esqueci de dizer que está em .NET (qualquer versão) e o idioma é C #.

    
por 16.06.2009 / 13:02
2

Não tenho certeza de quão rápido isso funcionará em uma pasta tão grande, mas vale a pena tentar.

Salve o código abaixo em um arquivo .vbs. Em seguida, execute-o a partir de um prompt do CMD assim:

CSCRIPT FileCount.vbs C:\Insert\Your\Path\Here.

Ele conta apenas o arquivo na raiz do caminho, mas pode ser modificado para incluir subpastas.

Dim oArgs
Set oArgs = WScript.Arguments

If oArgs.Count >= 1 Then
   WScript.Echo FileCount(oArgs(0))   
End If

'------------------------------------------------------------
'
'------------------------------------------------------------
Function FileCount(sPath)
   Dim oFSO
   Dim oFolder
   Dim oFiles

   Set oFSO = CreateObject("Scripting.FileSystemObject")
   Set oFolder = oFSO.GetFolder(sPath)
   Set oFiles = oFolder.Files
   FileCount = oFiles.Count
End Function
    
por 16.06.2009 / 12:52
1

Você pode usar o script nesta página e chame assim:

 call filecount.bat C:\temp filecount /S
 echo %filecount%

A opção "/ S" é necessária se você quiser pesquisar recursivamente em todas as subpastas

    
por 16.06.2009 / 12:54