在 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#。