如何快速统计文件夹中文件的数量?

如何快速统计文件夹中文件的数量?

在 Windows 2003 Server 上,我有一个应用程序,它处理请求并将它们作为队列存储在文件夹中,第二个进程会处理这些存储的请求。但是有时文件数量往往会达到 100,000 个。

使用 Windows 资源管理器甚至命令提示符下的 dir 似乎并不能很好地帮助我找出存储了多少文件。它还会耗费太多时间、CPU 和 I/O。

有什么建议么?

答案1

我不确定这个程序在那么大的文件夹上运行速度有多快,但值得尝试。

将以下代码保存在 .vbs 文件中。然后,从 CMD 提示符运行它,如下所示:

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

它仅计算路径根目录中的文件,但可以修改为包含子文件夹。

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

答案2

您可以使用此页面上的脚本并这样调用:

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

如果要在所有子文件夹中递归搜索,则需要使用开关“/S”

答案3

好吧,在这种情况下,如果没有内置实用程序可以帮助我写这个小家伙:

using System;
using System.IO;

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

但我希望我不必这么做。感谢你们所有人 :)

更新:我忘了说它是在.NET(任何版本)中并且语言是 C#。

相关内容