ZetCode

VBScript ShareName 属性

最后修改于 2025 年 4 月 9 日

VBScript 中的 ShareName 属性是 FileSystemObject 的一部分。如果路径位于共享的网络资源上,它将返回指定网络的网络共享名称。此属性是只读的,有助于识别网络环境中的共享文件夹。

如果路径不在网络共享上,ShareName 将返回一个空字符串。它对于需要验证网络资源访问的脚本很有用。本教程将通过实际示例介绍 ShareName,以演示其在各种场景下的用法。

ShareName 属性概述

ShareName 属性属于 VBScript FileSystemObject 中的 Drive 对象。它检索与驱动器或路径关联的网络共享名称。该属性仅适用于网络共享,不适用于本地路径。

主要功能包括自动检测网络共享名称以及为非共享路径返回空字符串。它帮助脚本识别资源是本地的还是网络相关的。理解此属性有助于创建健壮的网络感知脚本。

基本 ShareName 检测

此示例演示了 ShareName 的最简单用法,以检测驱动器是否为网络共享。它展示了如何通过 FileSystemObject 访问该属性。脚本会检查驱动器字母是否共享。

basic_sharenamedetection.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set drive = fso.GetDrive("H:")

If drive.ShareName <> "" Then
    WScript.Echo "H: is a network share: " & drive.ShareName
Else
    WScript.Echo "H: is not a network share"
End If

Set drive = Nothing
Set fso = Nothing

该脚本创建一个 FileSystemObject 并获取 H: 驱动器对象。它检查 ShareName 属性以确定它是否为网络共享。结果将相应显示。空字符串表示不存在共享。

检查多个驱动器

此示例展示了如何使用 ShareName 检查多个驱动器是否存在网络共享。它会遍历所有可用的驱动器并报告它们的共享状态。此方法有助于盘点网络资源。

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

For Each drive In drives
    If drive.IsReady Then
        If drive.ShareName <> "" Then
            WScript.Echo drive.DriveLetter & ": is shared as " & drive.ShareName
        End If
    End If
Next

Set drives = Nothing
Set fso = Nothing

该脚本枚举所有驱动器并检查每个驱动器的 ShareName。为了避免错误,只处理就绪的驱动器。对于共享驱动器,它将同时显示驱动器字母和共享名称。非共享驱动器将被静默跳过。

验证 UNC 路径共享

此示例演示了如何将 ShareName 与 UNC 路径一起使用。它展示了如何在检查共享之前如何首先将 UNC 路径解析为驱动器字母。当处理映射的网络驱动器时,此技术很有帮助。

unc_path_check.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set wshNetwork = CreateObject("WScript.Network")

For Each drive In fso.Drives
    If drive.IsReady And drive.DriveType = 3 Then ' Network drive
        WScript.Echo "Drive " & drive.DriveLetter & ": maps to " & drive.ShareName
    End If
Next

Set wshNetwork = Nothing
Set fso = Nothing

该脚本识别网络驱动器(DriveType = 3)并显示它们的映射。它将 FileSystemObjectWScript.Network 结合使用以获取完整的网络驱动器信息。此方法可以显示本地驱动器字母及其 UNC 共享路径。

带有文件夹路径的 ShareName

此示例展示了如何将 ShareName 与特定文件夹路径一起使用。它演示了如何检查特定文件夹是否位于网络共享上。脚本首先从文件夹路径获取驱动器。

folder_path_check.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
folderPath = "\\server\share\subfolder"

Set folder = fso.GetFolder(folderPath)
Set drive = fso.GetDrive(folder.Drive)

If drive.ShareName <> "" Then
    WScript.Echo "Folder is on share: " & drive.ShareName
Else
    WScript.Echo "Folder is not on a network share"
End If

Set drive = Nothing
Set folder = Nothing
Set fso = Nothing

该脚本获取文件夹路径并检索其驱动器信息。然后它会检查驱动器的 ShareName 属性。此方法适用于本地路径和 UNC 路径,可提供一致的共享检测。

ShareName 的错误处理

此示例演示了使用 ShareName 时的正确错误处理。它展示了如何处理驱动器可能未就绪或无法访问的情况。健壮的错误处理使脚本在生产环境中更加可靠。

error_handling.vbs
On Error Resume Next

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

If Err.Number = 0 Then
    If drive.IsReady Then
        If drive.ShareName <> "" Then
            WScript.Echo "Share name: " & drive.ShareName
        Else
            WScript.Echo "No share name found"
        End If
    Else
        WScript.Echo "Drive is not ready"
    End If
Else
    WScript.Echo "Error accessing drive: " & Err.Description
End If

On Error Goto 0
Set drive = Nothing
Set fso = Nothing

该脚本包括对驱动器访问和就绪情况的全面错误检查。它使用 On Error Resume Next 来防止脚本因错误而终止。在尝试访问 ShareName 属性之前,会检查每个潜在的故障点。

来源

FileSystemObject 文档

在本文中,我们探讨了 VBScript 中的 ShareName 属性,涵盖了它的用法和实际应用。从基本共享检测到高级错误处理,这些示例展示了可靠的网络共享识别。有了这些知识,您就可以通过健壮的网络资源检测来增强您的脚本。

作者

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

列出所有 VBScript 教程