# Class 对象
使用 Class 语句创建的对象。提供了对类的各种事件的访问
# 事件
事件 | 描述 |
---|---|
Initialize | 当创建相关类的一个实例时将产生此事件。 |
Terminate | 当相关类的一个实例结束时将发生此事件。 |
不允许显式地将一个变量声明为 Class 类型。在 VBScript 的上下文中,“类对象”一词指的是用 VBScript Class 语句定义的任何对象。 在使用 Class 语句建立了类定义之后,可以用下面的形式创建类的一个实例:
Dim X
Set X = New classname
2
由于 VBScript 是一种后期约束型语言,下面的做法是不允许的:
Dim X as New classname
Dim X
X = New classname
Set X = New Scripting.FileSystemObject
2
3
4
# Dictionary 对象
保存数据键和项目对的对象。
CreateObject("Scripting.Dictionary")
# 属性
属性 | 描述 |
---|---|
CompareMode | 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 |
Count | 返回一个集合或 Dictionary 对象包含的项目数。只读。 |
Item | 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的 item。可读写。 |
Key | 在 Dictionary 对象中设置 key。 |
# 方法
方法 | 描述 |
---|---|
Add.html | 向 Dictionary 对象添加键和项目对。 |
Exists | 如果在 Dictionary 对象中存在指定键,返回 True;如果不存在,返回 False。 |
Items | 返回一个数组,其中包含有 Dictionary 对象中的所有项目。 |
Keys | 返回一数组,其中包含有 Dictionary 对象的所有现存键。 |
Remove | 从 Dictionary 对象中删除键和项目对。 |
RemoveAll | RemoveAll 方法删除 Dictionary 对象中的所有键和项目对。 |
Dictionary 对象与 PERL 关联数组是等价的。项目(可以是任何形式的数据)被保存在数组中。每项都与唯一的键相关联。键值用于检索单个项目,通常是整数或字符串,但不能为数组。
如何创建 Dictionary 对象
Dim d '创建一个变量。
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "Athens" '添加键和项目。
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
2
3
4
5
# Drive 对象
提供对磁盘驱动器或网络共享的属性的访问。
CreateObject("Scripting.FileSystemObject")
以下代码举例说明如何使用 Drive 对象访问驱动器的属性:
Function ShowFreeSpace(drvPath)
Dim fso, d, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set d = fso.GetDrive(fso.GetDriveName(drvPath))
s = "驱动器 " & UCase(drvPath) & " - "
s = s & d.VolumeName & "<BR>"
s = s & "可用空间: " & FormatNumber(d.FreeSpace/1024, 0)
s = s & "KB"
ShowFreeSpace = s
End Function
2
3
4
5
6
7
8
9
10
属性 | 描述 |
---|---|
AvailableSpace | 返回指定的驱动器或网络共享对于用户的可用空间大小。 |
DriveLetter | 返回本地驱动器或网络共享的驱动器号。只读。 |
DriveType | 返回一个描述指定驱动器的类型的值。 |
FileSystem | 返回指定的驱动器使用的文件系统的类型。 |
FreeSpace | 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 |
IsReady | 如果指定的驱动器就绪,返回 True;否则返回 False。 |
Path | 返回指定文件、文件夹或驱动器的路径。 |
RootFolder | 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 |
SerialNumber | 返回十进制序列号,用于唯一标识一个磁盘卷。 |
ShareName | 返回指定的驱动器的网络共享名。 |
TotalSize | 返回驱动器或网络共享的总字节数。 |
VolumeName | 设置或返回指定驱动器的卷标。可读写。 |
# Drives 集合
只读所有可用驱动器的集合。
说明 无论是否插入媒体,可移动媒体驱动器都显示在 Drives 集合中。
以下代码举例说明如何获得 Drives 集合并使用 For Each...Next 语句枚举集合成员:
ShowDriveList 函数
Dim fso, d, dc, s, n
Set fso = CreateObject("Scripting.FileSystemObject")
Set dc = fso.Drives
For Each d in dc
n = ""
s = s & d.DriveLetter & " - "
If d.DriveType = Remote Then
n = d.ShareName
ElseIf d.IsReady Then
n = d.VolumeName
End If
s = s & n &"<BR>"
Next
ShowDriveList = s
End Function
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 属性
属性 | 描述 |
---|---|
Count | 返回一个集合或 Dictionary 对象包含的项目数。只读 |
Item | 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的 item。可读写。 |
# Err 对象
含有关于运行时错误的信息。接受用于生成和清除运行时错误的 Raise 和 Clear 方法。
Err 对象是一个具有全局范围的固有对象:不必在您的代码中创建它的示例。Err的属性被一个错误的生成器设置:Visual Basic,自动对象,或 VBScript 程序。 Err 对象的默认属性是 number。Err.Number 含有一个整数,且可由 Automation 对象使用以返回 SCODE。 当发生运行时错误时,Err 的属性由标识错误的唯一信息以及可用于处理它的信息填充。要在代码中生成运行时错误,请用 Raise 方法。 Err 对象属性被重新设置为零或零长度字符串 ("")。Clear 方法可被用于显式地重新设置 Err。
# 属性
属性 | 描述 |
---|---|
Description | 返回或设置与错误相关联的说明性字符串。 |
HelpContext | 设置或返回帮助文件主题的上下文 ID。 |
HelpFile | 设置或返回帮助文件的完整有效路径。 |
Number | 返回或设置数值指定错误。Number 是 Err 对象的默认属性。 |
Source | 返回或设置最初生成错误的对象或应用程序的名称。 |
# 方法
方法 | 描述 |
---|---|
Clear | 清除 Err 对象的所有属性设置。 |
Raise | 产生一个运行时错误。 |
下面的示例说明了 Err 对象的用法:
On Error Resume Next
Err.Raise 6 '产生溢出错误。
MsgBox ("Error # " & CStr(Err.Number) & " " & Err.Description)
Err.Clear '清除错误。
2
3
4
# File 对象
提供对文件的所有属性的访问。
以下代码举例说明如何获得一个 File 对象并查看它的属性:
Function ShowDateCreated(filespec)
Dim fso,f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile(filespec)
ShowDateCreated = f.DateCreated
End Function
2
3
4
5
6
# 属性
属性 | 描述 |
---|---|
Attributes | 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 |
DateCreated | 返回指定的文件或文件夹的创建日期和时间。只读。 |
DateLastAccessed | 返回指定的文件或文件夹的上次访问日期和时间。只读。 |
DateLastModified | 返回指定的文件或文件夹的上次修改日期和时间。只读。 |
Drive | 返回指定的文件或文件夹所在的驱动器的驱动器号。只读。 |
Name | 设置或返回指定的文件或文件夹的名称。可读写。 |
ParentFolder | 返回指定文件或文件夹的父文件夹。只读。 |
Path | 返回指定文件、文件夹或驱动器的路径。 |
ShortName | 返回按照早期 8.3 文件命名约定转换的短文件名。 |
ShortPath | 返回按照 8.3 命名约定转换的短路径名。 |
Size | 对于文件,返回指定文件的字节数;对于文件夹,返回该文件夹中所有文件和子文件夹的字节数。 |
Type | 返回文件或文件夹的类型信息。例如,对于扩展名为 .TXT 的文件,返回“Text Document”。 |
# 方法
方法 | 描述 |
---|---|
Copy | 将指定的文件或文件夹从某位置复制到另一位置。 |
Delete | 删除指定的文件或文件夹。 |
Move | 将指定的文件或文件夹从某位置移动到另一位置。 |
OpenAsTextStream | 打开指定的文件并返回一个 TextStream 对象,此对象用于对文件进行读、写或追加操作。 |
# Files 集合
文件夹中所有 File 对象的集合.
说明 以下代码举例说明如何获得 Folders 集合并使用 For Each...Next 语句枚举集合成员:
Function ShowFolderList(folderspec)
Dim fso, f, f1, fc, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(folderspec)
Set fc = f.Files
For Each f1 in fc
s = s & f1.name
s = s & "<BR>"
Next
ShowFolderList = s
End Function
2
3
4
5
6
7
8
9
10
11
# 属性
属性 | 描述 |
---|---|
Count | 返回一个集合或 Dictionary 对象包含的项目数。只读 |
Item | 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的 item。可读写。 |
# FileSystemObject 对象
提供对计算机文件系统的访问。
# 属性
属性 | 描述 |
---|---|
Drives | 返回由本地机器上所有 Drive 对象组成的 Drives 集合。 |
方法
方法 | 描述 |
---|---|
BuildPath | 向现有路径后添加名称。 |
CopyFile | 将一个或多个文件从某位置复制到另一位置。 |
CopyFolder | 将文件夹从某位置递归复制到另一位置。 |
CreateFolder | 创建文件夹。 |
CreateTextFile | 创建指定文件并返回 TextStream 对象,该对象可用于读或写创建的文件。 |
DeleteFile | 删除指定的文件。 |
DeleteFolder | 删除指定的文件夹和其中的内容。 |
DriveExists | 如果指定的驱动器存在,则返回 True;否则返回 False。 |
FileExists | 如果指定的文件存在返回 True;否则返回 False。 |
FolderExists | 如果指定的文件夹存在,则返回 True;否则返回 False。 |
GetAbsolutePathname | 从提供的指定路径中返回完整且含义明确的路径。 |
GetBaseName | 返回字符串,其中包含文件的基本名 (不带扩展名), 或者提供的路径说明中的文件夹。 |
GetDrive | 返回与指定的路径中驱动器相对应的 Drive 对象。 |
GetDriveName | 返回包含指定路径中驱动器名的字符串。 |
GetExtensionName | 返回字符串,该字符串包含路径最后一个组成部分的扩展名。 |
GetFile | 返回与指定路径中某文件相应的 File 对象。 |
GetFileName | 返回指定路径(不是指定驱动器路径部分)的最后一个文件或文件夹。 |
GetFolder | 返回与指定的路径中某文件夹相应的 Folder 对象。 |
GetParentFolderName | 返回字符串,该字符串包含指定的路径中最后一个文件或文件夹的父文件夹。 |
GetSpecialFolder | 返回指定的特殊文件夹。 |
GetTempName | 返回随机生成的临时文件或文件夹的名称,用于执行要求临时文件或文件夹的操作。 |
MoveFile | 将一个或多个文件从某位置移动到另一位置。 |
MoveFolder | 将一个或多个文件夹从某位置移动到另一位置。 |
OpenTextFile | 打开指定的文件并返回一个 TextStream 对象,可以读取、写入此对象或将其追加到文件。 |
在该例子代码中,ActiveXObject 对象被赋给 FileSystemObject (fso)。随后 CreateTextFile 方法创建文件 TextStream 对象 (a),并用 WriteLine 方法将一行文本写入创建的文本文件。Close 方法刷新缓冲区并关闭该文件。
说明 以下代码举例说明如何使用 FileSystemObject 对象返回一个 TextStream 对象,此对象可以被读取或写入:
Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("c:\testfile.txt", True)
MyFile.WriteLine("This is a test.")
MyFile.Close
2
3
4
5
在上述代码中,CreateObject 函数返回 FileSystemObject (fso)。然后 CreateTextFile 方法创建一个作为 TextStream 对象 (a) 的文件。之后 WriteLine 方法在所创建的文件中写入一行文本;Close 方法刷新缓冲区,并关闭该文件。
# Folder 对象
提供对文件夹所有属性的访问。
说明 以下代码举例说明如何获得 Folder 对象并查看它的属性:
Function ShowDateCreated(folderspec)
Dim fso, f,
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(folderspec)
ShowDateCreated = f.DateCreated
End Function
2
3
4
5
6
# 属性
属性 | 描述 |
---|---|
Attributes | 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 |
DateCreated | 返回指定的文件或文件夹的创建日期和时间。只读。 |
DateLastAccessed | 返回指定的文件或文件夹的上次访问日期和时间。只读。 |
DateLastModified | 返回指定的文件或文件夹的上次修改日期和时间。只读。 |
Drive | 返回指定的文件或文件夹所在的驱动器的驱动器号。只读。 |
Files | 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 |
IsRootFolder | 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 |
Name | 设置或返回指定的文件或文件夹的名称。可读写。 |
ParentFolder | 返回指定文件或文件夹的父文件夹。只读。 |
Path | 返回指定文件、文件夹或驱动器的路径。 |
ShortName | 返回按照早期 8.3 文件命名约定转换的短文件名。 |
ShortPath | 返回按照 8.3 命名约定转换的短路径名。 |
Size | 对于文件,返回指定文件的字节数;对于文件夹,返回该文件夹中所有文件和子文件夹的字节数。 |
SubFolders | 返回由指定文件夹中所有子文件夹(包括隐藏文件夹和系统文件夹)组成的 Folders 集合。 |
Type | 返回文件或文件夹的类型信息。例如,对于扩展名为 .TXT 的文件,返回“Text Document”。 |
# 方法
方法 | 描述 |
---|---|
Copy | 将指定的文件或文件夹从某位置复制到另一位置。 |
Delete | 删除指定的文件或文件夹。 |
Move | 将指定的文件或文件夹从某位置移动到另一位置。 |
CreateTextFile | 创建指定文件并返回 TextStream 对象,该对象可用于读或写创建的文件。 |
# Folders 集合
包含在一个 Folder 对象中的所有 Folder 对象的集合。
说明 以下代码举例说明如何获得 Folders 集合并使用 For Each...Next 语句枚举集合成员:
Function ShowFolderList(folderspec)
Dim fso, f, f1, fc, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(folderspec)
Set fc = f.SubFolders
For Each f1 in fc
s = s & f1.name
s = s & "<BR>"
Next
ShowFolderList = s
End Function
2
3
4
5
6
7
8
9
10
11
# 属性
属性 | 描述 |
---|---|
Count | 返回一个集合或 Dictionary 对象包含的项目数。只读 |
Item | 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的 item。可读写。 |
# 方法
方法 | 描述 |
---|---|
Add | 包含在一个 Folder 对象中的所有 Folder 对象的集合。 |
# Match 对象
提供对一个正则表达式匹配的只读属性的访问途径功能。
说明 Match 对象只能通过 RegExp 对象的 Execute 方法来创建,该方法实际上返回了 Match 对象的集合。所有的 Match 对象属性都是只读的。
在执行正则表达式时,可能产生零个或多个 Match 对象。每个 Match 对象提供了被正则表达式搜索找到的字符串的访问、字符串的长度,以及找到匹配的索引位置等。
下面的代码说明了 Match 对象的用法:
Function RegExpTest(patrn, strng)
Dim regEx, Match, Matches ' 建立变量。
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = patrn ' 设置模式。
regEx.IgnoreCase = True ' 设置是否区分大小写。
regEx.Global = True ' 设置全局替换。
Set Matches = regEx.Execute(strng) ' 执行搜索。
For Each Match in Matches ' 遍历 Matches 集合。
RetStr = RetStr & "Match " & I & " found at position "
RetStr = RetStr & Match.FirstIndex & ". Match Value is "'
RetStr = RetStr & Match.Value & "'." & vbCRLF
Next
RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 属性
属性 | 描述 |
---|---|
FirstIndex | 返回搜索字符串中找到匹配项的位置。 |
Length | 返回搜索字符串中所找到的匹配的长度。 |
Value | 返回在一个搜索字符串中找到的匹配项的值或文本。 |
# Matches 集合
正则表达式 Match 对象的集合。
说明 Matches 集合中包含若干独立的 Match 对象,只能使用 RegExp 对象的 Execute 方法来创建之。与独立的 Match 对象属性相同,Matches `集合的一个属性是只读的。 在执行正则表达式时,可能产生零个或多个 Match 对象。每个 Match 对象都提供了与正则表达式匹配的字符串的访问入口、字符串的长度,以及标识匹配位置的索引。 下面的代码将说明如何使用正则表达式查找获得 Matches 集合,以及如何循环遍历集合:
Function RegExpTest(patrn, strng)
Dim regEx, Match, Matches ' 创建变量。
Set regEx = New RegExp ' 创建正则表达式。
regEx.Pattern = patrn ' 设置模式。
regEx.IgnoreCase = True ' 设置是否区分大小写。
regEx.Global = True ' 设置全程匹配。
Set Matches = regEx.Execute(strng) ' 执行搜索。
For Each Match in Matches ' 循环遍历Matches集合。
RetStr = RetStr & "Match found at position "
RetStr = RetStr & Match.FirstIndex & ". Match Value is '"
RetStr = RetStr & Match.Value & "'." & vbCRLF
Next
RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 属性
属性 | 描述 |
---|---|
Count | 返回一个集合或 Dictionary 对象包含的项目数。只读 |
Item | 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的 item。可读写。 |
# RegExp 对象
提供简单的正则表达式支持功能。
说明 下面的代码说明了RegExp对象的用法:
Function RegExpTest(patrn, strng)
Dim regEx, Match, Matches ' 建立变量。
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = patrn ' 设置模式。
regEx.IgnoreCase = True ' 设置是否区分字符大小写。
regEx.Global = True ' 设置全局可用性。
Set Matches = regEx.Execute(strng) ' 执行搜索。
For Each Match in Matches ' 遍历匹配集合。
RetStr = RetStr & "Match found at position "
RetStr = RetStr & Match.FirstIndex & ". Match Value is '"
RetStr = RetStr & Match.Value & "'." & vbCRLF
Next
RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
2
3
4
5
6
7
8
9
10
11
12
13
14
15
属性 | 描述 |
---|---|
Global | 设置或返回一个布尔值。 |
IgnoreCase | 设置或返回一个布尔值,指明模式搜索是否区分大小写。 |
Pattern | 设置或返回要被搜索的正则表达式模式。 |
方法 | 描述 |
---|---|
Execute | 对一个指定的字符串进行正则表达式搜索。 |
Replace | 替换正则表达式搜索中所找到的文本。 |
Test | 对一个指定的字符串进行正则表达式搜索。 |
# SubMatches 对象
提供对正则表达式子匹配字符串的只读值的访问。
说明
SubMatches 集合包含了单个的子匹配字符串,只能用 RegExp 对象的 Execute 方法创建。SubMatches 集合的属性是只读的。 运行一个正则表达式时,当圆括号中捕捉到子表达式时可以有零个或多个子匹配。SubMatches 集合中的每一项是由正则表达式找到并捕获的的字符串。 下面的代码演示了如何从一个正则表达式获得一个 SubMatches 集合以及如何它的专有成员:
Function SubMatchTest(inpStr)
Dim oRe, oMatch, oMatches
Set oRe = New RegExp
' 查找一个电子邮件地址(不是一个理想的 RegExp)
oRe.Pattern = "(\w+)@(\w+)\.(\w+)"
' 得到 Matches 集合
Set oMatches = oRe.Execute(inpStr)
' 得到 Matches 集合中的第一项
Set oMatch = oMatches(0)
' 创建结果字符串。
' Match 对象是完整匹配 — dragon@xyzzy.com
retStr = "电子邮件地址是: " & oMatch & vbNewline
' 得到地址的子匹配部分。
retStr = retStr & "电子邮件别名是: " & oMatch.SubMatches(0) ' dragon
retStr = retStr & vbNewline
retStr = retStr & "组织是: " & oMatch. SubMatches(1)' xyzzy
SubMatchTest = retStr
End Function
MsgBox(SubMatchTest("请写信到 dragon@xyzzy.com 。 谢谢!"))
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
属性 | 描述 |
---|---|
Count | 返回一个集合或 Dictionary 对象包含的项目数。只读 |
Item | 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的 item。可读写。 |
# TextStream 对象
方便对文件的顺序访问。
TextStream.{property | method( )} property 和 method 参数可以是与 TextStream 对象相连的任何属性和方法。请注意在实际使用时,TextStream 被从 FileSystemObject 返回的代表 TextStream 对象的变量占位符代替。
说明 在下面的代码中,a 是由 FileSystemObject 的 CreateTextFile 方法返回的 TextStream 对象:
Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile= fso.CreateTextFile("c:\testfile.txt", True)
MyFile.WriteLine("This is a test.")
MyFile.Close
2
3
4
5
WriteLine 和 Close 是 TextStream 对象的两个方法。
# 方法
方法 | 描述 |
---|---|
Close | 关闭打开的 TextStream 文件。 |
Read | 从TextStream 文件中读取指定数量的字符,并返回由此得到的字符串。 |
ReadAll | 读取 TextStream 文件的全部内容并返回由此得到的字符串。 |
ReadLine | 从TextStream 文件中读取一整行(一直到换行符,但不包括换行符),并返回由此得到的字符串。 |
Skip | 在读取 TextStream 文件时跳过指定个数的字符。 |
SkipLine | 在读取TextStream 文件时跳过下一行。 |
Write | 将给定的字符串写入到一个 TextStream 文件。 |
WriteBlankLines | 将指定数量的换行符写入到一个 TextStream 文件。 |
WriteLine | 向 TextStream 文件中写入给定的字符串和一个换行符。 |
# 属性
属性 | 描述 |
---|---|
AtEndOfLine | 如果文件指针正好位于 TextStream 文件中的行尾符之前,则返回true,否则返回 false。只读。 |
AtEndOfStream | 如果文件指针正好位于 TextStream 文件中的结尾,则返回true,否则返回 false。只读。 |
Column | 为只读属性,返回当前字符在 TextStream 文件中的列号。 |
Line | 只读属性,返回 TextStream 文件中当前的行号。 |