ZetCode

VBScript GetDrive 方法

最后修改于 2025 年 4 月 9 日

VBScript 中的 GetDrive 方法是 FileSystemObject 的一部分。它返回一个与指定驱动器对应的 Drive 对象。此方法允许访问驱动器的属性,如可用空间、总大小和驱动器类型。对于需要与存储设备交互的脚本至关重要。

GetDrive 可以处理驱动器字母、UNC 路径或映射的网络驱动器。它提供有关存储介质的详细信息。本教程通过实际示例介绍 GetDrive 的用法。

GetDrive 方法概述

GetDrive 方法接受一个参数:驱动器规范。它返回一个具有属性和方法的 Drive 对象。驱动器规范可以是字母、路径或网络共享。此方法可通过 FileSystemObject 访问。

主要功能包括访问驱动器容量、文件系统类型和卷信息。它适用于本地和网络驱动器。理解此方法有助于创建健壮的存储管理脚本。如果驱动器不存在,该方法会引发错误。

基本驱动器信息

此示例演示了 GetDrive 最简单的用法,以检索驱动器的基本信息。它展示了如何访问常见的驱动器属性。脚本显示驱动器字母、类型和文件系统。

basic_getdrive.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set drive = fso.GetDrive("C:")

WScript.Echo "Drive Letter: " & drive.DriveLetter
WScript.Echo "Drive Type: " & drive.DriveType
WScript.Echo "File System: " & drive.FileSystem

Set drive = Nothing
Set fso = Nothing

脚本创建一个 FileSystemObject 并调用 C: 驱动器的 GetDrive。然后显示三个关键属性。DriveType 返回一个表示驱动器类型的数字(固定驱动器为 2)。FileSystem 显示格式(NTFS、FAT32 等)。

检查驱动器可用空间

此示例演示如何使用 GetDrive 检查驱动器上的可用空间。它展示了如何访问与容量相关的属性。脚本以千兆字节为单位计算可用空间,以提高可读性。

drive_space.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set drive = fso.GetDrive("C:")

totalGB = drive.TotalSize / (1024^3)
freeGB = drive.FreeSpace / (1024^3)

WScript.Echo "Total Size: " & FormatNumber(totalGB, 2) & " GB"
WScript.Echo "Free Space: " & FormatNumber(freeGB, 2) & " GB"

Set drive = Nothing
Set fso = Nothing

脚本检索 C: 驱动器并计算其总空间和可用空间。值从字节转换为千兆字节以提高可读性。FormatNumber 以两位小数显示结果。这对于磁盘监控脚本很有用。

使用网络驱动器

GetDrive 可以访问有关映射的网络驱动器的信息。此示例展示了如何从网络共享检索属性。脚本在访问其属性之前会检查网络驱动器是否已准备就绪。

network_drive.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set drive = fso.GetDrive("Z:")

If drive.IsReady Then
    WScript.Echo "Share Name: " & drive.ShareName
    WScript.Echo "Volume Name: " & drive.VolumeName
Else
    WScript.Echo "Drive Z: is not ready"
End If

Set drive = Nothing
Set fso = Nothing

脚本尝试访问映射的网络驱动器(Z:)。它首先检查 IsReady 属性以避免错误。如果已准备就绪,则显示共享名称和卷名称。此方法对于可靠的网络驱动器访问至关重要。

列出所有可用驱动器

此示例演示如何列出系统上的所有可用驱动器。它将 GetDriveDrives 集合结合使用。脚本以可读格式显示每个驱动器的字母和类型。

list_drives.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set drives = fso.Drives

For Each drive In drives
    WScript.Echo "Drive: " & drive.DriveLetter & " - Type: " & GetDriveTypeName(drive.DriveType)
Next

Function GetDriveTypeName(typeNum)
    Select Case typeNum
        Case 0: GetDriveTypeName = "Unknown"
        Case 1: GetDriveTypeName = "Removable"
        Case 2: GetDriveTypeName = "Fixed"
        Case 3: GetDriveTypeName = "Network"
        Case 4: GetDriveTypeName = "CD-ROM"
        Case 5: GetDriveTypeName = "RAM Disk"
        Case Else: GetDriveTypeName = "Unknown"
    End Select
End Function

Set drives = Nothing
Set fso = Nothing

脚本使用 Drives 集合枚举所有驱动器。对于每个驱动器,它会显示字母和一个人类可读的类型。辅助函数 GetDriveTypeName 将数字类型转换为字符串。这提供了对所有存储设备的全面视图。

检查驱动器准备情况和类型

此示例展示了 GetDrive 的高级用法,用于检查驱动器状态。它演示了如何处理不同的驱动器类型和准备状态。脚本提供了有关每个驱动器可用性的详细信息。

drive_status.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set drives = fso.Drives

For Each drive In drives
    WScript.Echo "Drive " & drive.DriveLetter & ":"
    WScript.Echo "  Type: " & GetDriveTypeName(drive.DriveType)
    
    If drive.IsReady Then
        WScript.Echo "  Status: Ready"
        WScript.Echo "  File System: " & drive.FileSystem
        WScript.Echo "  Free Space: " & FormatNumber(drive.FreeSpace / (1024^2), 2) & " MB"
    Else
        WScript.Echo "  Status: Not Ready"
    End If
Next

' Same GetDriveTypeName function as previous example

Set drives = Nothing
Set fso = Nothing

脚本在尝试访问属性之前检查每个驱动器的准备情况。对于已准备就绪的驱动器,它会显示包括兆字节可用空间在内的详细信息。此方法可防止访问不可用驱动器时出现错误。对于处理可移动媒体的脚本特别有用。

来源

FileSystemObject 文档

在本文中,我们探讨了 VBScript 中的 GetDrive 方法,涵盖了其用法和实际应用。从基本驱动器信息到高级状态检查,这些示例演示了全面的驱动器管理。有了这些知识,您就可以通过强大的驱动器处理功能来增强您的脚本。

作者

我叫 Jan Bodnar,是一名热情的程序员,拥有多年的编程经验。自 2007 年以来,我一直在撰写编程文章。到目前为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有八年以上的经验。

列出所有 VBScript 教程