VBScript作为脚本语言不仅能够编写简单的脚本,而且还能够创建及使用对象编写复杂的脚本,如Class对象,数据字典,操作文件夹及文件,错误处理,正则表达式等等。
1. Class对象
2. Dictionary对象
3. FileSystemObject对象
4. Err对象
5. RegExp对象
1. Class对象
使用Class语句可以创建一个对象,可以为它编写字段、属性及方法,它只有两个对象事件——Initialize与Terminate。首先来看一个简单的Class示例:
07 | Private Sub Class_Initialize |
12 | Private Sub Class_Terminate |
13 | Set m_Profile = Nothing |
17 | Public Default Property Get UserName |
21 | Public Property Let UserName(newUserName) |
22 | m_UserName = newUserName |
25 | Public Property Get Profile |
26 | Set Profile = m_Profile |
29 | Public Property Set Profile(newProfile) |
30 | Set m_Profile = newProfile |
34 | Public Function ToString() |
35 | ToString = "Hello! " & Me .UserName |
用VBScript创建的对象并不是真正的面向对象,它不能继承和实现多态,但是在QTP对象模型Utility中,提供了一个RegisterUserFunc方法可以覆写对象的方法,但这也不是真正意义上的面向对象。Class及其成员如何创建,上面已经简单介绍过,若要对其中的一些语句进一步了解,还需要去仔细阅读一些参考文档。下面我们来看看如何调用对象,在《VBScript基础上》变量赋值中也已经提到过。
2. Dictionary对象
Dictionary是存储数据键和项目对的对象,其主要属性有Count、Item、Key,主要方法有Add、Exists、Items、Keys、Remove、RemoveAll。下面是该对象的一个综合示例:
03 | Set d = CreateObject( "Scripting.Dictionary" ) |
13 | For i = 0 To d.Count - 1 |
22 | Sub ShowDictionary(dic) |
25 | For i = 0 To dic.Count - 1 |
26 | str = str & a(i) & vbCrlf |
3. FileSystemObject对象
FileSystemObject对象可以操作驱动器、文件夹及文件,其对象模型包含下面的对象和集合。
对象/集合 | 描述 |
---|
FileSystemObject | 主对象。包含用来创建、删除和获得有关信息,以及通常用来操作驱动器、文件夹和文件的方法和属性。和该对象相关联的许多方法,与其他 FSO 对象中的方法完全相似;它们是为了方便才被提供的。 |
Drive | 对象。包含用来收集信息的方法和属性,这些信息是关于连接在系统上的驱动器的,如驱动器的共享名和它有多少可用空间。请注意,"drive" 并非必须是硬盘,也可以是 CD-ROM 驱动器,RAM 磁盘等等。并非必须把驱动器实物地连接到系统上;它也可以通过网络在逻辑上被连接起来。 |
Drives | 集合。提供驱动器的列表,这些驱动器实物地或在逻辑上与系统相连接。Drives 集合包括所有驱动器,与类型无关。要可移动的媒体驱动器在该集合中显现,不必把媒体插入到驱动器中。 |
File | 对象。包含用来创建、删除或移动文件的方法和属性。也用来向系统询问文件名、路径和多种其他属性。 |
Files | 集合。提供包含在文件夹内的所有文件的列表。 |
Folder | 对象。包含用来创建、删除或移动文件夹的方法和属性。也用来向系统询问文件夹名、路径和多种其他属性。 |
Folders | 集合。提供在 Folder 内的所有文件夹的列表。 |
TextStream | 对象。用来读写文本文件。 |
FileSystemObject对象所有属性、方法及对象和集合的详细说明,您可以查阅参考文档,因为内容比较多,我们就看一个简单的示例,直观地来了解一下该对象的使用,该示例是将一个文件复制到指定文件夹下。
02 | Dim fso, filePath, folderPath |
03 | Set fso = CreateObject( "Scripting.FileSystemObject" ) |
04 | filePath = "C:\\Test.txt" |
05 | folderPath = "D:\\Test" |
06 | Call MoveFile(filePath, folderPath) |
09 | Sub MoveFile(sourceFile, targetFolder) |
12 | Set file = fso.GetFile(sourceFile) |
14 | If Not fso.FolderExists(targetFolder) Then |
15 | fso.CreateFolder(targetFolder) |
18 | file.Move(targetFolder & "\\" & file.Name) |
4. Err对象
Err对象是一个具有全局范围的内部对象,不必在代码中创建它的实例,含有关于运行时错误的信息。主要属性有Description、HelpContext、HelpFile、Number、Source,主要方法有Clear、Raise,其属性及方法的详细说明详见参考文档。下面的示例说明了Err对象的用法:
04 | MsgBox( "Error #" & CStr (Err.Number) & " " & Err.Description) |
10 | Set conn = CreateObject( "ADODB.Connection" ) |
17 | If conn.Errors.Count > 0 Then |
5. RegExp对象
RegExp是正则表达式对象,提供简单的正则表达式支持功能。主要属性有Global、IgnoreCase、Pattern,主要方法有Execute、Replace、Test,其属性及方法的详细说明详见参考文档。下面的示例说明了RegExp对象的用法:
01 | Function RegExpTest(patrn, strng) |
02 | Dim regEx, match, matches |
05 | regEx.IgnoreCase = True |
07 | Set matches = regEx.Execute(strng) |
08 | For Each match in matches |
09 | retStr = retStr & "Match found at position " |
10 | retStr = retStr & match.FirstIndex & ". Match Value is '" |
11 | retStr = retStr & match.Value & "'." & vbCRLF |
16 | MsgBox(RegExpTest( "is." , "IS1 is2 IS3 is4" )) |