VBS查看分区剩余空间
在VBS中,都是通过FileSystemObject(FSO)来对驱动器、文件夹和文件进行处理的,用来创建、删除和获得其相关信息(方法、属性)。
在此我们先使用 Drives 集合来获得驱动器列表信息,然后再对每个驱动器进行遍历,获得其总大小、可用空间等属性,如下:
Ø 驱动器总容量(TotalSize 属性)
Ø 驱动器可用空间(AvailableSpace 或 FreeSpace 属性)
Ø 驱动器号(DriveLetter 属性)
Ø 驱动器类型,如固定的、网络的、可移动的、CD-ROM或RAM磁盘(DriveType 属性)
Ø 驱动器文件系统类型,如FAT32、NTFS等(FileSystem 属性)
将如下代码保存为.vbs格式,然后双击即可运行:
Dim fso, ldisk,d '定义变量 Set fso = CreateObject("Scripting.FileSystemObject") '创建FileSystemObject对象,然后在新创建的对象上使用适当的方法访问对象的属性 set ldisk = fso.drives for each d in ldisk '遍历所有驱动器 msgbox d.driveletter '显示驱动器号 Next |
运行结果如下:
对上面的代码稍微进行修改后,如下:
Dim fso, ldisk,d '定义变量 Set fso = CreateObject("Scripting.FileSystemObject") '创建FileSystemObject对象,然后在新创建的对象上使用适当的方法访问对象的属性 set ldisk = fso.drives for each d in ldisk '遍历所有驱动器 msgbox "分区 " & d.DriveLetter &" 总大小:" &d.TotalSize '显示驱动器号和总大小 Next |
运行结果如下:
接着还会出现如下报错:
这是因为脚本遍历到了CD-ROM,其不具有“TotalSize”属性导致。所以这时候我们还需要根据“DriveLetter” 属性对驱动器进行过滤,根据下表我们可以得出 固定分区的DriverLetter 为2。
驱动器类型 |
值 |
可移动存储设备 |
1 |
固定驱动器,包括所有硬盘驱动器(包括移动硬盘) |
2 |
网络驱动器 |
3 |
CD-ROM |
4 |
在此对以上代码进行修改后,如下:
Dim fso, ldisk,d '定义变量 Set fso = CreateObject("Scripting.FileSystemObject") '创建FileSystemObject对象,然后在新创建的对象上使用适当的方法访问对象的属性 set ldisk = fso.drives for each d in ldisk '遍历所有驱动器 If d.DriveType = 2 Then msgbox "分区 " & d.DriveLetter &" 总大小:" &d.TotalSize '显示驱动器号和总大小 End If Next |
运行该脚本后不会再出现前面的报错信息。在这里,驱动器容量大小单位为“字节”,为了方便查看,可以将其转换为“GB”,通过使用round函数对其进行处理,保留结果小数点后一位,修改后代码如下:
Dim fso, ldisk,d '定义变量 Set fso = CreateObject("Scripting.FileSystemObject") '创建FileSystemObject对象,然后在新创建的对象上使用适当的方法访问对象的属性 set ldisk = fso.drives for each d in ldisk '遍历所有驱动器 If d.DriveType = 2 Then msgbox "分区 " & d.DriveLetter &" 总大小:" &round(d.TotalSize/1024/1024/1024,1) &"GB" '显示驱动器号和总大小 End If Next |
运行结果如下:
如果我们要想显示当前可用空间百分比,则代码如下:
Dim fso, ldisk,d,Tsize,Fsize '定义变量 Set fso = CreateObject("Scripting.FileSystemObject") '创建FileSystemObject对象,然后在新创建的对象上使用适当的方法访问对象的属性 set ldisk = fso.drives for each d in ldisk '遍历所有驱动器 If d.DriveType = 2 Then Tsize = Round(d.TotalSize/1024/1024/1024,1) ‘分区总大小 Fsize = Round(d.FreeSpace/1024/1024/1024,1) ‘分区剩余空间大小 msgbox "分区 " & d.DriveLetter &" 剩余空间为:" & formatpercent(Fsize/Tsize) '显示驱动器剩余空间百分比 End If Next |
运行结果如下: