ZetCode

VBScript ShortName 属性

最后修改于 2025 年 4 月 9 日

VBScript 中的 ShortName 属性是 FileSystemObject 对象模型的一部分。它返回文件或文件夹的短(8.3)名称版本。此属性对于与需要 8.3 文件名格式的旧版系统兼容非常有用。它可用于文件和文件夹对象。

ShortName 为旧版 Windows 提供向后兼容性。8.3 格式由最多 8 个字符的名称和 3 个字符的扩展名组成。本教程将通过实际示例介绍 ShortName 的用法。

ShortName 属性概述

ShortName 属性返回一个表示文件或文件夹短名称的字符串。它是一个只读属性,可通过 VBScript 中的 FileSystemObject 访问。该属性可用于现有文件和目录。

主要功能包括从长文件名自动转换为 8.3 格式。它不会修改实际文件,只是提供一个替代名称。了解此属性有助于处理旧版应用程序或系统。

获取文件的 ShortName

此示例演示了如何检索文件的短名称。它显示了 ShortName 属性与 File 对象的基本用法。脚本同时获取长名称和短名称进行比较。

file_shortname.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.GetFile("C:\Windows\System32\notepad.exe")

WScript.Echo "Long name: " & file.Name
WScript.Echo "Short name: " & file.ShortName

Set file = Nothing
Set fso = Nothing

该脚本创建一个 FileSystemObject 并获取对 notepad.exe 的引用。然后,它同时显示常规名称和短名称。短名称通常以 8.3 格式显示,例如 NOTEPAD.EXE。

获取文件夹的 ShortName

此示例展示了如何检索目录的短名称。过程与文件类似,但使用 Folder 对象。它演示了 ShortName 属性在目录上的用法。

folder_shortname.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\Program Files")

WScript.Echo "Long name: " & folder.Name
WScript.Echo "Short name: " & folder.ShortName

Set folder = Nothing
Set fso = Nothing

该脚本获取“Program Files”文件夹并显示两个名称。短名称通常显示为 PROGRA~1 或类似的名称。这对于处理无法处理路径中空格的旧版应用程序很有用。

在路径构造中使用 ShortName

此示例演示了如何使用 ShortName 来构建与旧系统兼容的路径。它将文件夹和文件的短名称组合起来创建一个完整的路径。这可确保最大程度的兼容性。

shortname_path.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\Program Files")
Set file = fso.GetFile("C:\Program Files\Internet Explorer\iexplore.exe")

shortPath = folder.ShortName & "\" & file.ShortName
WScript.Echo "Short path: " & shortPath

Set file = Nothing
Set folder = Nothing
Set fso = Nothing

该脚本使用目录和文件的短名称来构造路径。这将创建类似“PROGRA~1\IEXPLORE.EXE”的路径。此类路径在不支持长文件名或空格的旧系统中有效。

列出目录中的 ShortName

此示例展示了如何列出目录中所有文件的短名称。它演示了处理多个文件并访问它们的 ShortName 属性。该脚本提供了完整的目录列表。

directory_listing.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\Windows\System32")

WScript.Echo "Files in " & folder.Name & ":"
For Each file In folder.Files
    WScript.Echo file.Name & " (" & file.ShortName & ")"
Next

Set folder = Nothing
Set fso = Nothing

该脚本列出了 System32 中的所有文件,包括长名称和短名称。每行都显示了两种格式的文件名。这对于比较命名约定或对旧系统问题进行故障排除很有用。

检查 ShortName 可用性

此示例检查给定文件的短名称是否存在。某些系统可能禁用了短名称。该脚本演示了在使用 ShortName 属性时如何进行错误处理。

check_shortname.vbs
On Error Resume Next

Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.GetFile("C:\Windows\System32\notepad.exe")

If Err.Number = 0 Then
    shortName = file.ShortName
    If Err.Number = 0 Then
        WScript.Echo "Short name available: " & shortName
    Else
        WScript.Echo "Short names not enabled on this system"
    End If
Else
    WScript.Echo "File not found"
End If

Set file = Nothing
Set fso = Nothing

该脚本尝试获取 notepad.exe 的短名称。如果系统上禁用了短名称,它将显示相应的消息。这有助于创建在不同环境中运行的健壮脚本。

来源

FileSystemObject 文档

在本文中,我们探讨了 VBScript 中的 ShortName 属性,涵盖了其用法和实际应用。从基本的文件操作到目录列表,这些示例演示了如何使用 8.3 文件名。有了这些知识,您就可以增强脚本,以更好地与旧系统兼容。

作者

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

列出所有 VBScript 教程