请问有谁知道用VBS怎么查硬盘上每个簇的大小

来源:百度知道 编辑:UC知道 时间:2024/05/29 16:02:02
我想用VBS来查硬盘上每个簇的大小,请问有什么方法可以实现吗?

例如我想查出C盘的每个簇是多大?

不是要查硬盘的剩余空间,谢谢了。

你可以先查出硬盘的剩余空间,然后写入一个1字节的文件,然后再把硬盘空间查出来,一减就知道簇的大小了。你可以参考一下。

用APi函数可查.
事实上每个簇大小与文件格式有关.
FAT文件格式与NTFS文件格式的簇大小不一样.

例:将 FAT 卷转换成 NTFS。

CONVERT volume /FS:NTFS [/V] [/CvtArea:filename] [/NoSecurity] [/X]

volume 指定驱动器号(后面跟一个冒号)、
装载点或卷名。

下面的ioa7777大哥的思路非常好,不过欠佳,经测试发现,由于文件系统的原因,小文件会存放在文件目录结构中而不占用空间,在NTFS文件系统下是512字节及以内的文件是小文件,不占用空间(不信的可以自己试试,看属性),所以改进的方法应该是:从512字节开始步长512字节,逐渐递增文件大小,直至发现占用空间变化为止,取空间变化的差值为簇大小!为什么步长是512字节呢?因为大部分的硬盘物理盘块大小就是512字节

我的测试代码(测试当前目录的磁盘的):

Dim SFO
Set SFO = CreateObject("Scripting.FileSystemObject")

Dim drive
Set drive = SFO.GetDrive(SFO.GetDriveName(SFO.GetAbsolutePathName(".")))

Dim oldSpace
oldSpace = drive.FreeSpace

Dim fileName
fileName = SFO.GetTempName

Dim file
Set file = SFO.CreateTextFile(&qu