VBS脚本运行库手册(6)-文件的属性

发布时间:2019-09-13编辑:脚本学堂
文件属性对于文件的管理来说很重要。
例如属性 DateLastAccssed 最后打开文件的日期,属性Size 文件bytes数。
系统管理员可以通过 windows 资源管理器或者命令行工具去访

文件属性对于文件的管理来说很重要。
例如属性 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