Comment countr rapidement le nombre de files dans un dossier?

Sur un server Windows 2003, j'ai une application qui traite les requêtes et les stocke dans un dossier en tant que queue où un deuxième process vient et traite ces requêtes stockées. Cependant, parfois, le nombre de files tend à atteindre 100 000.

L'utilisation d'un Explorateur Windows ou même d'un dir à l'invite de command ne semble pas être une grande solution pour moi de savoir combien de files sont stockés. Cela prend aussi trop de time, CPU et E / S.

Aucune suggestion?

Je ne suis pas sûr de la rapidité avec laquelle cela fonctionnera sur un dossier aussi important, mais il vaut la peine d'essayer.

Enregistrez le code ci-dessous dans un file .vbs. Ensuite, exécutez-le à partir d'une invite CMD comme ceci:

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

Il ne count que le file dans la racine du path, mais il pourrait être modifié pour inclure des sous-dossiers.

 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 

Vous pouvez utiliser le script sur cette page et l'appeler de cette façon:

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

Le commutateur "/ S" est nécessaire si vous souhaitez effectuer une search récurrente dans tous les sous-dossiers

Bien dans ce cas, s'il n'y a pas d'utilitaires embeddeds qui peuvent m'aider, j'ai écrit ce petit bugger:

système d'utilisation; en utilisant System.IO;

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

mais j'espérais n'avoir pas à le faire. Merci à tous 🙂

Mise à jour: J'ai oublié de dire que c'est dans .NET (toute version) et la langue est C #.