ZetCode

VBScript Attributes 属性

最后修改于 2025 年 4 月 9 日

VBScript 中的 Attributes 属性是 FileSystemObject 对象模型的一部分。它表示文件或文件夹的属性,例如只读、隐藏或系统。这些属性存储为数值,可以使用位运算进行组合。

Attributes 允许以编程方式检查和修改文件/文件夹属性。对于需要处理特殊文件的文件管理脚本来说,它是至关重要的。本教程将通过实际示例涵盖 Attributes 的用法。

属性概述

Attributes 属性使用预定义的常量来表示不同的文件属性。每个属性对应于数值中的特定位。可以使用 OR 运算符组合多个属性。

常见的属性常量包括 Normal (0)ReadOnly (1)Hidden (2)System (4)。该属性可以读取也可以修改。理解这些值是处理 VBScript 中文件属性的关键。

检查文件属性

此示例演示了如何检查文件的属性。我们将检查一个文件,看看它是否是只读或隐藏的。脚本使用 GetFile 方法访问文件对象。

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

If file.Attributes And 1 Then
    WScript.Echo "File is read-only"
End If

If file.Attributes And 2 Then
    WScript.Echo "File is hidden"
End If

Set file = Nothing
Set fso = Nothing

脚本检查 Attributes 值中是否设置了特定的位。AND 运算符执行与属性常量的按位比较。如果结果非零,则表示存在该属性。此方法允许从组合值中检查单个属性。

设置文件属性

此示例展示了如何修改文件属性。我们将使文件变为只读和隐藏。脚本演示了设置单个属性和组合多个属性。

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

' Set read-only and hidden attributes
file.Attributes = file.Attributes Or 1 Or 2

' Alternative way using constants
Const ReadOnly = 1
Const Hidden = 2
file.Attributes = file.Attributes Or ReadOnly Or Hidden

WScript.Echo "Attributes set successfully"

Set file = Nothing
Set fso = Nothing

脚本使用 OR 运算符组合属性而不影响其他属性。常量使代码更具可读性和可维护性。该操作在添加新属性的同时保留现有属性。这比直接赋值更安全。

删除文件属性

此示例演示了如何从文件中删除特定属性。我们将删除只读属性,同时保留其他属性。AND NOT 操作会清除特定的位。

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

' Remove read-only attribute
file.Attributes = file.Attributes And Not 1

' Alternative using constant
Const ReadOnly = 1
file.Attributes = file.Attributes And Not ReadOnly

WScript.Echo "Read-only attribute removed"

Set file = Nothing
Set fso = Nothing

脚本使用 AND NOT 来清除只读位。其他属性保持不变。此方法精确且避免了意外修改。在处理属性值时,常量提高了代码的清晰度。

列出所有属性

此示例展示了如何列出文件的所有属性。我们将检查每个可能的属性并显示其状态。脚本演示了全面的属性检查。

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

Const Normal = 0
Const ReadOnly = 1
Const Hidden = 2
Const System = 4
Const Volume = 8
Const Directory = 16
Const Archive = 32
Const Alias = 64
Const Compressed = 128

WScript.Echo "File attributes for: " & file.Path
WScript.Echo "ReadOnly: " & CBool(file.Attributes And ReadOnly)
WScript.Echo "Hidden: " & CBool(file.Attributes And Hidden)
WScript.Echo "System: " & CBool(file.Attributes And System)
WScript.Echo "Archive: " & CBool(file.Attributes And Archive)

Set file = Nothing
Set fso = Nothing

脚本定义了所有属性常量以提高清晰度。每个属性都使用 AND 进行检查,并使用 CBool 显示真/假输出。此方法提供了所有文件属性的完整视图。它对诊断脚本很有用。

组合多个属性

此示例演示了如何同时处理多个属性。我们将创建一个脚本,在普通和特殊属性集之间切换。该脚本展示了实际场景中的属性管理。

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

Const SpecialAttributes = 1 + 2 + 4 ' ReadOnly + Hidden + System

If file.Attributes And SpecialAttributes Then
    ' Remove special attributes
    file.Attributes = file.Attributes And Not SpecialAttributes
    WScript.Echo "Special attributes removed"
Else
    ' Add special attributes
    file.Attributes = file.Attributes Or SpecialAttributes
    WScript.Echo "Special attributes added"
End If

Set file = Nothing
Set fso = Nothing

脚本将多个属性组合到一个常量中。它使用组合掩码检查是否设置了任何特殊属性。切换操作会一次性添加或删除所有特殊属性。此方法对于批量属性修改非常有效。

来源

FileSystemObject 文档

在本文中,我们探讨了 VBScript 中的 Attributes 属性,涵盖了它的用法和实际应用。从检查单个属性到复杂的组合,这些示例演示了强大的文件属性管理。通过这些知识,您可以创建具有精确属性控制的健壮文件处理脚本。

作者

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

列出所有 VBScript 教程