文件属性对于文件的管理来说很重要。
例如属性 DateLastAccssed 最后打开文件的日期,属性Size 文件bytes数。
系统管理员可以通过 windows 资源管理器或者命令行工具去访问文件的属性。虽然这些工具可以返回计算机上文件的信息,但是他们不是被设计成用来保存和操作文件属性的。此外,这些工具大多功能有限,不能使系统管理员很好的通过属性来周期性的清理磁盘或者寻找出满足特定属性的文件集合。
幸运的是,你可以通过 FSO 来获得计算机上任何文件的详细信息。和其它的工具相比,FSO可以让你查询一个文件或者一组文件的信息。
Attributes 文件的位图属性。
DateCreated 文件的创建日期。
DateLastAccessed 数据的最后访问日期。
DateLastModified 数据的最后更改日期。
Drive 磁盘驱动器和托尾符(例如:C:)代表文件存在的磁盘上。
Name 文件的名字,不包含文件的路径
ParentFolder 父文件夹的名字。例如,C:WindowsSystem32Scrrun.dll的父文件夹名字是 Windows
Path 文件的路径,比如 C:WindowsSystem32Scrrun.dll
ShortName MS-DOS类型的文件名,符合8.3 命名规则的。
ShortPath MS-DOS-style 文件名字。符合 8.3 命名规则的。
Size 文件的大小,单位是 bytes
Type 文件类型,是在注册表区中对于此文件类型的字符串描述。
为了访问这些属性,你必须:
1. 创建一个 FSO 对象实例。
2. 用 GetFile 方法创建一个对象的 reference。脚本必须给 GetFile 提供文件的路径参数。
3. 用 Echo(或者其它的处理办法)来表达出文件的属性。
下面的脚本使用 GetFile 的方法来绑定到文件 C:WindowsSystem32Scrrun.dll 然后返回其属性:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("c:windowssystem32scrrun.dll")
Wscript.Echo "Date created: " & objFile.DateCreated
Wscript.Echo "Date last accessed: " & objFile.DateLastAccessed
Wscript.Echo "Date last modified: " & objFile.DateLastModified
Wscript.Echo "Drive: " & objFile.Drive
Wscript.Echo "Name: " & objFile.Name
Wscript.Echo "Parent folder: " & objFile.ParentFolder
Wscript.Echo "Path: " & objFile.Path
Wscript.Echo "Short name: " & objFile.ShortName
Wscript.Echo "Short path: " & objFile.ShortPath
Wscript.Echo "Size: " & objFile.Size
Wscript.Echo "Type: " & objFile.Type
和文件夹一样,文件有些属性可以通过 FSO 返回和配置,有些属性比如位图属性就不能通过 FSO 来获得的。
Normal 0 没有这样的属性设置为 True。
Read-only 1 文件为只读。
Hidden 2 文件在 Windows 浏览器中是隐藏的。
System 4 文件是操作系统必须的。
Archive 32 存盘,文件标记为需要备份的。
alias 64 此文件是其它文件的快捷方式
Compressed 2048 此文件是压缩的。
想获得文件的这些属性,用GetFile 方法来绑定一个文件,在你创建完了这个文件对象的reference 之后,你可以用逻辑与操作来决定这些属性。如果没有任何属性被设置了,那么这个值就是 0。如下面脚本绑定了文件 C:FSOScriptlog.txt 然后检查每个属性并用FSO 返回属性的值。
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("C:FSOScriptLog.txt")
If objFile.Attributes AND 0 Then
Wscript.Echo "No attributes set."
End If
If objFile.Attributes AND 1 Then
Wscript.Echo "Read-only."
End If
If objFile.Attributes AND 2 Then
Wscript.Echo "Hidden file."
End If
If objFile.Attributes AND 4 Then
Wscript.Echo "System file."
End If
If objFile.Attributes AND 32 Then
Wscript.Echo "Archive bit set."
End If
If objFile.Attributes AND 64 Then
Wscript.Echo "Link or shortcut."
End If
If objFile.Attributes AND 2048 Then
Wscript.Echo "Compressed file."
End If
配置文件属性
FSO 提供了配置如下属性的一些办法:
1、readonly 2、Hidden 3、System 4、Archive
为了配置文件的这些属性,脚本可以用如下的进程:
1. 用 GetFile 的方法绑定一个文件。
2. 检查你要更改的文件的属性。如你想将一个文件设置成只读的那么就检查它是否是已经是已读了。
3. 如果不是只读的,那么用逻辑 XOR 操作来触发这个开关。这样可以使文件变成只读的。但 是如果文件已经是只读的,那么不要用逻辑 XOR 操作,如果你用了,那么这个属性就被移掉了。
以下脚本使用 AND 操作来检查只读开关是否已经打开,从而确定文件C:FSOTestScript.vbs是否为只读。如果为只读,脚本用 XOR 操作来将其改成非只读的。
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("C:FSOTestScript.vbs")
If objFile.Attributes AND 1 Then
objFile.Attributes = objFile.Attributes XOR 1
End If
也可以使用如下语句来同时去更改系统、存盘、隐藏等属性
objFile.Attributes = objFile.Attributes AND 0