2

On a Windows 2003 Server I have an application that processes requests and stores them in a folder as a queue where a second process comes and processes these stored requests. However at times the number of files tend to reach 100,000.

Using Windows Explorer or even dir at the command prompt doesn't seem to be much of a solution for me to find out how many files there are stored. It also takes too much time, CPU and I/O.

Any suggestions?

3 Answers 3

2

I'm not sure how fast this will work on a folder that big, but it's worth trying.

Save the code below in a .vbs file. Then, run it from a CMD prompt like this:

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

It only counts the file in the root of the path, but it could be modified to include sub-folders.

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
1

You could use the script on this page and call it this way:

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

The switch "/S" is needed if you want to recursively search in all subfolders

0

Well in this case, if there are no built-in utilities that can help I wrote this little bugger:

using System;
using System.IO;

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

but I hoped I didn't have to do this. Thanks to all of you :)

Update : I forgot to say it's in .NET (any version) and the language is C#.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .