您现在的位置是:网站首页> 编程资料编程资料

VBS中FileSystemObject对象详解(完整版)_vbs_

2023-05-25 349人已围观

简介 VBS中FileSystemObject对象详解(完整版)_vbs_

FSO是FileSystemObject 或 Scripting.FileSystemObject 的缩写,为 IIS 内置组件,用于操作磁盘、文件夹或文本文件。FSO 的对象、方法和属性非常的多,这里用示例的方式列出常用的,注意:《VBScript 语言参考》或《JScript 语言参考》中的:《FileSystemObject 用户指南》和《Scripting 运行时库参考》便是微软给出的 FileSystemObject 完整参考。

FSO 不能操作二进制文件,要操作二进制文件,使用:ADODB.Stream。
下面是转摘的关于FileSystemObject的详细介绍,TextStream是其中的一个子对象。

前言

最近一直在学VBScript,网上相关的教程也有很多,但大多数的对象都放在ASP中讲解,对于没有学过ASP的同学来说就非常郁闷了。所以打算把在学习FileSystemObject及TextStream中所常用的属性和方法写出来供大家来学习,如有不妥的地方请予以指出。

备注:所有的脚本均在QTP 9.0中测试过。

FileSystemObject对象概述

FileSystemObject 对象的作用:提供对计算机文件系统的访问,它允许我们在代码内操作文本文件、文件夹及驱动器。FileSystemObject 对象提供一个属性和一系列方法,可用它们来操纵 FileSystemObject 对象实现的一些从属对象。这里提供了全部的内容概要,然后介绍每一个从属对象。

一、FileSystemObject 对象的属性

FileSystemObject 对象只有一个属性,它用于得到当前机器上的所有有效驱动器的列表,如表1所示:

表1 FileSystemObject 对象的属性和说明

属性

说明

Drivers

返回本地计算机可用的驱动器列表

 '如下脚本就可以获得FileSystemObject的Drivers属性 Set objFSO = CreateObject ("Scripting.FileSystemObject") Set colDrivers = objFSO.Drivers 

正如已经看到的,FileSystemObject 对象包含一个属性——Drives,它返回一个包括本地计算机上所有可用驱动器的集合。

Drives 集合里的每个条目是一个 Drive 对象。Drive 对象的属性如表2所示:

表2 Drive 对象的属性及说明

方法

说明

AvailableSpave

考虑了帐户定额和/或其他限制,返回驱动器上对于该用户可用的空间的大小

DriveLetter

返回驱动器的字母

DriveType

返回驱动器的类型。返回值可以是 Unknown(0)、Removeable(1)、Fixed(2)、Network(3)、CDRom(4) 和 RamDisk(5)。然而需要注意的是当前版本的 scrrun.dll 不支持预定义常数 Network,必须使用十进制 3 来代替

FileSystem

返回驱动器文件系统的类型。返回值包括“FAT”、“NTFS”和“CDFS”

FreeSpace

返回驱动器上可用剩余空间的总量

IsReady

返回一个布尔值表明驱动器是否已准备好

Path

返回一个由驱动器字母和冒号组成的驱动器路径,即“C:”

RootFolder

返回代表的驱动器根目录文件夹的 Folder 对象

SerialNumber

返回一个用于识别磁盘卷的十进制的序列号

ShareName

如果是一个网络驱动器,返回该驱动器的网络共享名

TotalSize

返回驱动器的总容量(以字节为单位)

VolumeName

设定或返回本地驱动器卷名

因此,通过使用 Drives 集合里的 Drive 对象,可以在服务器上产生一个驱动器列表,与通过检查每个可能的驱动器字母来判别驱动器是否存在的方法相比,效率更高。我们也可以得到关于该驱动器的信息。

示例:

 ' 创建FileSystemObject对象 Set objFSO = CreateObject("Scripting.FileSystemObject") ' 创建Drives集合,并赋值给colDrives Set colDrives = objFSO.Drives ' 遍历Drives集合 For Each objDrive in colDrives '判断驱动器是否已准备好 If objDrive.IsReady Then msg = "驱动器的名称为:" & objDrive.DriveLetter & " " msg =msg & "驱动器文件系统的类型:" & objDrive.FileSystem &" " msg = msg & "驱动器的总容量:" & int(objDrive.TotalSize/(1024*1024*1024)) & "G " msg = msg & "剩余空间的总量:" & int(objDrive.FreeSpace/(1024*1024*1024)) & "G " End If Next reporter.ReportEvent micDone ,"遍历Drives集合",msg

备注:在系统上运行这段程序以前有一点要注意。如果在 A 驱动器里没有磁盘,或 CD-ROM 驱动器里没有光盘,将得到一个错误提示:“Disk Not Ready”。除了 DriveLetter 属性和 DriveType 属性外,在使用其他属性和方法前,通过检查每个驱动器的 IsReady 属性,可以保护该页面。

二、FileSystemObject 对象的方法

1. 与驱动器有关的方法

表3 与驱动器有关的方法及说明

方法

说明

DriveExists(drivespec)

如果在 drivespec 中指定的驱动器存在,则返回 True,否则返回 False。drivespec 参数可以是一个驱动器字母,或者是文件、文件夹的完整绝对路径

GetDrive(drivespec)

返回 drivespec 指定的驱动器所对应的Drive对象。drivespec 可以包含冒号、路径分隔符或者是网络共享名,即:“C”、“C:”、“C:”及“/machinesharename”

GetDriveName(drivespec)

用字符串返回 drivespec 指定的驱动器的名称。drivespec 参数必须是文件或文件夹的绝对路径,或者仅仅是驱动器字母,例如:“c:”或“c”

 DriveExists的使用

方法名:DriveExists(drivespec)

说明:如果在 drivespec 中指定的驱动器存在,则返回 True,否则返回 False。drivespec 参数可以是一个驱动器字母,或者是文件、文件夹的完整绝对路径

示例:

 ' 创建FileSystemObject对象 Set objFSO = CreateObject ("Scripting.FileSystemObject") For intCode = 65 To 90 'ANSI codes for 'A' to 'Z' strLetter = Chr(intCode) 'Chr:返回与指定的 ANSI 字符代码相对应的字符。 If objFSO.DriveExists(strLetter) Then '判断相应的盘符是否存在,如存在输出 Reporter.ReportEvent micDone,"Show Drive”,” Found drive " & strLetter End If Next

另外,如果已知要访问的驱动器、文件夹或文件。可以直接对其使用 GetDrive、GetFolder、GetSpecialFolder 和 GetFile 方法。

2. 与文件夹有关的方法及属性

用FileSystemObject对象来操作文件夹的方法:

表4 与文件夹有关的方法及说明

方法

说明

BuildPath(path,name)

在已有的路径 path 上增添名字为 name 的文件或文件夹,如果需要,则增添路径分隔符' '

CopyFolder(source,destination,overwrite)

从指定的源文件夹 source(可以包含通配符)中复制一个或多个文件夹到指定的目标文件夹 destination,包含了源文件夹中的所有文件。如果 source 包含通配符或 destination 末尾是路径分隔符(‘'),那么认为 destination 是要放置源文件夹的拷贝的文件夹。否则的话,认为 destination 是要创建的新文件夹的路径名。如果 destination 文件夹已经存在且 overwrite 参数设置为 False,将产生错误,缺省的 overwrite 参数是True

CreateFolder(foldername)

创建一个路径名为 foldername 的文件夹。如果 foldername 已经存在将产生错误

DeleteFolder(folderspec,force)

删除由 folderspec 指定的一个或多个文件夹(可以在路径的最后部分包含通过配符)及文件夹中的所有内容。如果可选的 force 参数设置为 true,那么即使文件夹包含的文件具有只读属性,也将删除该文件夹。缺省的 force 参数是 False

FolderExists(folderspec)

如果 folderspec 指定的文件夹存在则返回 True,否则返回 False。folderspec 参数可以包含文件夹的绝对或相对路径,或者仅仅是当前文件夹中看到的文件夹名

GetAbsolutePathName(pathspec)

返回明确指定文件夹的路径,其中要考虑到当前文件夹的路径。例如,如果当前文件夹是“c:docssales”,而pathspec是“jan”,返回的字符是“c:docssalesjan”。通配符、”..”和”/”路径操作符都是可以接受的

GetFolder(folderspec)

返回 folderspec 指定的文件夹对应的 Folder 对象。folderspec 可以是文件夹的相对的或绝对的路径

GetParentFolderName(pathspec)

返回pathspec 文件或文件夹的上一级文件夹。不检验该文件夹是否存在

GetSpecialfolder(folderspec)

返回一个特定的 Windows 文件夹相对应的 Folder 对象。参数 folderspec 的允许值是WindowsFolder(0)、SystemFolder(1) 和 TemporaryFolder(2)

MoveFolder(source,destination)

将 source 指定的一个或多个文件夹移动到 destination 指定的文件夹。在 source 里可以包含通配符,但在 destination 中不行。如果 source 包含通配符或 destination 末尾是路径分隔符(‘'),则认为 destination 是要放置源文件夹的文件夹,否则认为它是一个新文件夹的完整路径和名字。如果目的文件夹 destination 已经存在则产生错误

CopyFolder的使用

方法名:CopyFolder(source,destination,overwrite)
说明:将文件夹从某位置递归复制到另一位置。详细说明请查看表4。

示例:

' 创建FileSystemObject对象
Set objfso = createobject("scripting.FileSystemObject")
' 将D:/test下所有的内容复制到c:/123
objfso.CopyFolder "D:/test","c:/123"

注:如果c:/123不存在,则QTP将自动创建它

CreateFolder及DeleteFolder的使用

方法名:CreateFolder(foldername)/DeleteFolder(folderspec,force)
说明:创建/删除一个路径名为 foldername 的文件夹。详细说明请查看表4。
示例:

' 创建FileSystemObject对象
Set objfso = createobject("scripting.FileSystemObject")
‘ 在c:/创建new folder文件夹,如果文件夹存在,则会出现错误提示
objfso.CreateFolder("c:/new folder")
‘ 删除c:/new folder文件夹
objfso.DeleteFolder("c:/new folder")

注:DeleteFolder无论文件夹是否包含内容,都将删除该文件夹

FolderExists的使用

方法名:FolderExist(folderspec)
说明:如果指定的文件夹存在,则返回 True;否则返回 False。详细说明请查看表4。
示例:

Function hanshu(strpath)
       Dim objfso,objset
       ‘ 创建FileSystemObjec对象
       Set objfso = CreateObject("Scripting.FileSystemObject")
       ‘ 判断在指定的路径中是否有
       If Not objfso.FolderExists(strpath) Then
               objset = objfso.CreateFolder(strpath)
       else
               objset = objfso.DeleteFolder(strpath)
       End If
       hanshu = objset
End Function
 
hanshu("c:/new folder")

GetAbsolutePathName的使用

方法名:GetAbsolutePathName(pathspec)
说明:从提供的指定路径中返回完整且含义明确的路径。详细说明请查看表4。
示例:

Dim objfso
‘创建FileSystemObject对象
Set objfso = createobject("Scripting.FileSystemObject")
‘返回当前的目录,下面两条语句返回一样的结果
msgbox (objfso.GetAbsolutePathName(""))
msgbox (objfso.GetAbsolutePathName("C:"))

GetFolder的使用

方法名:GetFolder(folderspec)
说明:返回与指定的路径中某文件夹相应的 Folder 对象。可以根据所返回的Folder 对象,再去访问该Folder 对象所持有的属性。
示例:

Dim objfso,objset
'创建FileSystemObject对象
Set objfso = createobject("Scripting.FileSystemObject")
'返回C:/testing的Folder的对象
Set objset = objfso.GetFolder("C:/testing")
' 根据所返回的Folder对象,去访问其相关的属性
reporter.ReportEvent micDone ,"Folder对象的相关属性","文件夹创建的日期:" & objset.DateCreated &"; 文件夹所在的驱动:" & objset.Drive & "; 文件夹的名字:" & objset.Name

注:关于Folder对象的属性,将在下面会详细介绍

GetParentFolderName的使用

方法名:GetParentFolderName(pathspec)
说明:返回字符串,该字符串包含指定的路径中最后一个文件或文件夹的父文件夹。
示例:

Dim objfso
'创建FileSystemObject对象
Set objfso = createobject("Scripting.filesystemobject")
'使用GetParentFolderName方法来返回上一层文件夹
msgbox (objfso.GetParentFolderName("C:/WINDOWS/addins"))

GetSpecialFolder的使用

方法名:GetSpecialFolder(folderspec)
说明:返回指定的特殊文件夹。详细说明请查看表4。
示例:

Dim fso,tempName
Set fso = CreateObject("Scripting.FileSystemObject")
'GetSpecialFolder()中的参数2,返回一个名为Temp的临时文件夹
Set tempName = fso.GetSpecialFolder(2)
msgbox tempName

MoveFolder的使用

方法名:MoveFolder(source,destination)
说明:将一个或多个文件夹从某位置移动到另一位置。详细说明请查看表4。
示例:

Dim sourcepath,destination
sourcepath = "C:/testing"
destina

-六神源码网