ZetCode

VBScript Attributes 属性

最后修改于 2025 年 4 月 9 日

VBScript 中的 Attributes 属性是 FileSystemObject 对象模型的一部分。它表示文件或文件夹的属性,例如只读、隐藏或系统状态。此属性允许以编程方式读取和修改文件/文件夹属性。

属性以位掩码常量的数值形式表示。您可以使用按位运算来检查、设置或删除特定属性。本教程通过实际示例涵盖 Attributes 属性,以演示其用法。

Attributes 属性概述

Attributes 属性可用于 FileFolder 对象。它返回或设置一个表示当前属性的整数。每个属性对应于此整数值中的特定位。

常见的属性常量包括 Normal (0)、ReadOnly (1)、Hidden (2)、System (4) 和 Archive (32)。可以使用按位 OR 运算组合属性。理解这些常量对于处理文件属性至关重要。

检查文件属性

此示例演示了如何检查文件的属性。我们将检查文件是否为只读、隐藏或设置了其他属性。该脚本使用按位 AND 运算来测试特定属性。

check_attributes.vbs
Const ReadOnly = 1
Const Hidden = 2
Const System = 4
Const Archive = 32

Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.GetFile("C:\test.txt")

If (file.Attributes And ReadOnly) = ReadOnly Then
    WScript.Echo "File is read-only"
End If

If (file.Attributes And Hidden) = Hidden Then
    WScript.Echo "File is hidden"
End If

Set file = Nothing
Set fso = Nothing

该脚本首先定义属性常量以提高清晰度。然后,它使用按位运算检查文件的属性。AND 运算隔离特定位以测试它们是否已设置。此方法允许独立检查多个属性。

设置文件属性

此示例演示了如何修改文件的属性。我们将设置只读和隐藏属性,同时保留其他现有属性。该脚本演示了用于属性操作的正确按位运算。

set_attributes.vbs
Const ReadOnly = 1
Const Hidden = 2

Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.GetFile("C:\test.txt")

' Set read-only and hidden attributes while preserving others
file.Attributes = file.Attributes Or ReadOnly Or Hidden

WScript.Echo "Attributes set successfully"

Set file = Nothing
Set fso = Nothing

该脚本使用按位 OR 添加属性而不影响其他属性。此方法可确保现有属性保持不变。该操作将当前属性与我们要设置的新属性结合起来。

删除文件属性

此示例演示了如何从文件中删除特定属性。我们将删除只读属性,同时保留其他属性。该脚本使用按位 NOT 和 AND 运算进行精确的属性控制。

remove_attributes.vbs
Const ReadOnly = 1

Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.GetFile("C:\test.txt")

' Remove read-only attribute while preserving others
file.Attributes = file.Attributes And (Not ReadOnly)

WScript.Echo "Read-only attribute removed"

Set file = Nothing
Set fso = Nothing

该脚本首先使用 NOT 反转只读常量。然后,它将此值与当前属性进行 AND 运算。此操作仅清除只读位,而将其余属性位保持不变。

列出所有属性

此示例演示了如何列出文件中设置的所有属性。它会检查每个可能的属性并报告哪些属性处于活动状态。该脚本提供了对文件属性的全面视图。

list_attributes.vbs
Const Normal = 0
Const ReadOnly = 1
Const Hidden = 2
Const System = 4
Const Volume = 8
Const Directory = 16
Const Archive = 32
Const Alias = 1024
Const Compressed = 2048

Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.GetFile("C:\test.txt")

WScript.Echo "File attributes for: " & file.Name

If file.Attributes = Normal Then
    WScript.Echo "Normal (no attributes set)"
Else
    If (file.Attributes And ReadOnly) = ReadOnly Then WScript.Echo "ReadOnly"
    If (file.Attributes And Hidden) = Hidden Then WScript.Echo "Hidden"
    If (file.Attributes And System) = System Then WScript.Echo "System"
    ' Additional attribute checks would follow the same pattern
End If

Set file = Nothing
Set fso = Nothing

该脚本为完整性定义了所有标准属性常量。然后,它将每个属性单独与文件的属性进行比较。此方法提供了对当前设置了哪些属性的详细分析。

组合多个属性操作

此高级示例演示了复杂的属性操作。我们将在一个操作中设置某些属性,同时清除另一些属性。该脚本展示了如何高效地执行多个属性更改。

combined_attributes.vbs
Const ReadOnly = 1
Const Hidden = 2
Const Archive = 32

Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.GetFile("C:\test.txt")

' Set Archive, remove ReadOnly, preserve Hidden if set
file.Attributes = (file.Attributes And (Not ReadOnly)) Or Archive

WScript.Echo "Attributes updated:"
WScript.Echo "Archive set, ReadOnly cleared, Hidden preserved"

Set file = Nothing
Set fso = Nothing

该脚本在一个语句中执行多个属性操作。它清除只读属性,设置存档属性,并在设置为隐藏时保留隐藏属性。这展示了高效的属性管理。

来源

FileSystemObject 文档

在本文中,我们探讨了 VBScript 中的 Attributes 属性,涵盖了其用法和实际应用。从基本的属性检查到复杂的属性操作,这些示例展示了强大的文件属性管理。有了这些知识,您就可以通过精确的属性控制来增强您的文件处理脚本。

作者

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

列出所有 VBScript 教程