计算Windows文件夹大小的最快方法是什么?

Lee*_*eeW 19 .net c# filesystems

我需要计算数百个文件夹的大小,有些将是10MB,有些可能是10GB,我需要一种使用C#获取每个文件夹大小的超快速方法.

我的最终结果有望成为:

Folder1 10.5GB

Folder2 230MB

Folder3 1.2GB

...

小智 34

添加对Microsoft Scripting Runtime的引用并使用:

Scripting.FileSystemObject fso = new Scripting.FileSystemObject();
Scripting.Folder folder = fso.GetFolder([folder path]);
Int64 dirSize = (Int64)folder.Size;
Run Code Online (Sandbox Code Playgroud)

如果你只需要大小,这比递归快得多.

  • 您还可以通过转到添加引用 > COM > Microsoft 脚本运行时来添加引用 (2认同)

Bol*_*ait 13

好的,这太糟糕了,但......

使用名为dirsize.bat的递归dos批处理文件:

@ECHO OFF
IF %1x==x GOTO start
IF %1x==DODIRx GOTO dodir
SET CURDIR=%1
FOR /F "usebackq delims=" %%A IN (`%0 DODIR`) DO SET ANSWER=%%A %CURDIR%
ECHO %ANSWER%
GOTO end
:start
FOR /D %%D IN (*.*) DO CALL %0 "%%D"
GOTO end
:dodir
DIR /S/-C %CURDIR% | FIND "File(s)"
GOTO end
:end
Run Code Online (Sandbox Code Playgroud)

注意:第5行的最后一个"%% A"后面应该有一个制表符,而不是空格.

这是您正在寻找的数据.它会很快地完成数千个文件.事实上,它可以在不到2秒的时间内完成我的整个硬盘驱动器.

执行这样的文件dirsize | sort /R /+25,以便查看最先列出的最大目录.

祝好运.


Jou*_*aas 1

在 .Net 中没有简单的方法可以做到这一点;您将必须循环遍历每个文件和子目录。请参阅此处的示例以了解它是如何完成的。