Bootstrap

vbs基础知识点3

1. 引用外部脚本文件

知识点:可以在一个 VBS 脚本中引用其他的 VBS 脚本文件,实现代码的模块化和复用。通过 ExecuteGlobal 语句来执行外部脚本文件中的代码,使其变量和函数在当前脚本中可用。
例子:
假设存在一个名为 external.vbs 的文件,内容如下:

Dim externalVar
externalVar = "This is from the external script."

Function externalFunction()
    externalFunction = "Function result from external script."
End Function

在另一个主脚本文件中,可以这样引用它:

ExecuteGlobal File.ReadAllText("external.vbs")

MsgBox externalVar
MsgBox externalFunction()

这里使用 File.ReadAllText(假设已经引入了处理文件读取的相关对象或函数,比如通过 FileSystemObject)读取外部脚本文件的内容,然后通过 ExecuteGlobal 执行,之后就可以访问其中的变量和调用函数了。

2. 传递参数给函数和过程

知识点:函数和过程可以接受参数,以便根据不同的输入执行相应的操作。参数在定义函数或过程时指定,在调用时传入具体的值。
例子:

Sub GreetUser(name)
    MsgBox "Hello, " & name & "!"
End Sub

GreetUser("John")

在这个例子中,GreetUser 过程接受一个参数 name,在调用时传入具体的人名 “John”,过程内部根据传入的参数值弹出相应的问候语。

3. 可选参数

知识点:函数或过程的参数可以设置为可选的,即在调用时可以选择是否传入该参数。通过在参数名后面添加 Optional 关键字来定义可选参数,并可以在函数或过程内部通过判断该参数是否被传入来执行不同的操作。
例子:

Function CalculateSum(num1, Optional num2 = 0)
    CalculateSum = num1 + num2
End Function

MsgBox CalculateSum(5)
MsgBox CalculateSum(3, 4)

在 CalculateSum 函数中,num2 被设置为可选参数,默认值为 0。当只传入一个参数时,函数会将该参数与默认值 0 相加;当传入两个参数时,函数会将两个参数相加。

4. 不定长参数(ParamArray)

知识点:有时候需要函数或过程能够接受不定数量的参数,这可以通过使用 ParamArray 关键字来实现。定义了带有 ParamArray 的参数后,该参数会被当作一个数组来处理,函数或过程可以遍历这个数组来处理所有传入的参数。
例子:

Function AddAllNumbers(ParamArray numbers())
    Dim sum
    sum = 0
    For Each num In numbers
        sum = sum + num
    End For
    AddAllNumbers = sum
End Function

MsgBox AddAllNumbers(1, 2, 3)
MsgBox AddAllNumbers(4, 5, 6, 7)

在 AddAllNumbers 函数中,ParamArray numbers() 定义了可以接受不定数量的参数。函数内部将传入的所有参数相加,并返回总和。

5. 函数的递归调用

知识点:函数可以调用自身,这种情况称为递归调用。递归通常用于解决那些可以分解为相似子问题的问题,比如计算阶乘、斐波那契数列等。
例子:

Function Factorial(n)
    If n = 0 Or n = 1 Then
        Factorial = 1
    Else
        Factorial = n * Factorial(n - 1)
    End If
End Function

MsgBox Factorial(5)

在计算阶乘的函数 Factorial 中,当 n 大于 1 时,函数通过调用自身来计算 n - 1 的阶乘,然后再与 n 相乘得到 n 的阶乘。

6. 字符串的查找与替换(InStr、Replace)

知识点:VBS 提供了 InStr 函数用于在一个字符串中查找另一个字符串的位置,以及 Replace 函数用于替换字符串中的指定部分。
例子:

Dim str, findStr, replaceStr
str = "Hello, World!"
findStr = "World"
replaceStr = "Universe"

Dim position
position = InStr(str, findStr)
MsgBox "找到字符串的位置:" & position

Dim newStr
newStr = Replace(str, findStr, replaceStr)
MsgBox "替换后的字符串:" & newStr

InStr 函数返回要查找的字符串在原字符串中的起始位置,如果未找到则返回 0。Replace 函数则将原字符串中指定的部分替换为新的字符串。

7. 正则表达式(通过创建正则对象实现)

知识点:虽然 VBS 本身没有内置的正则表达式直接操作符,但可以通过创建 RegExp 对象来使用正则表达式进行字符串的匹配、查找、替换等操作。
例子:

Dim regExp, str, matchResult
Set regExp = CreateObject("VBScript.RegExp")
regExp.Pattern = "\d+" '匹配一个或多个数字

str = "abc123def456"

Set matchResult = regExp.Execute(str)
For Each match In matchResult
    MsgBox "匹配到的数字:" & match.Value
End For

这里创建了一个 RegExp 对象,设置其 Pattern(模式)为匹配一个或多个数字,然后对给定的字符串进行执行操作,遍历匹配结果并弹出显示匹配到的数字。

8. 事件处理(以按钮点击事件为例,假设在 HTML 中嵌入 VBS)

知识点:在一些应用场景下,如在 HTML 页面中嵌入 VBS 代码,可以处理各种事件,比如按钮点击事件。通过定义与事件对应的函数,并将函数与事件关联起来实现事件处理。
例子:
假设在一个 HTML 文件中有如下代码(这里只展示关键部分,完整的 HTML 页面还需要其他结构元素):

<script language="VBScript">
    Sub ButtonClick()
        MsgBox "按钮被点击了!"
    End Sub
</script>

<input type="button" value="点击我" onclick="ButtonClick()">

在这个例子中,定义了 ButtonClick 函数来处理按钮点击事件,当用户点击页面上的按钮时,就会弹出相应的提示信息。

9. 与数据库的交互(以 Access 数据库为例,通过 ADO 对象)

知识点:VBS 可以通过 ActiveX Data Objects (ADO) 来与数据库进行交互,实现数据的查询、插入、更新、删除等操作。
例子:

Dim conn, rs
Set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.RecordSet")

conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\example.mdb"

rs.Open "SELECT * FROM users", conn

Do While Not rs.EOF
    MsgBox "用户名:" & rs.Fields("username") & vbCrLf & "密码:" & rs.Fields("password")
    rs.MoveNext
End Do

rs.Close
conn.Close

这里首先创建了 ADODB.Connection 和 ADODB.RecordSet 对象,然后打开与 Access 数据库的连接,通过查询语句从数据库的 users 表中获取数据,遍历查询结果并弹出显示每条记录的用户名和密码信息,最后关闭记录集和连接。

10. 打印输出(在命令提示符下输出,假设在支持的环境中)

知识点:除了使用 MsgBox 弹出消息框显示信息外,还可以在命令提示符下输出内容,这在一些需要记录脚本执行过程或结果的场景下很有用。可以使用 WScript.Echo (在 Windows Script Host 环境下)来实现打印输出。
例子:

WScript.Echo "这是在命令提示符下输出的内容"

当通过命令提示符运行这个 VBS 脚本时,就会在命令行中显示相应的内容。

11. 数据验证(检查输入数据是否符合要求)

知识点:在处理用户输入或其他来源的数据时,通常需要进行数据验证,确保数据符合预期的格式、范围等要求。可以通过条件判断和相关函数来实现数据验证。
例子:

Dim inputNum
inputNum = InputBox("请输入一个整数:")

If IsNumeric(inputNum) And CInt(inputNum) = inputNum Then
    MsgBox "输入的整数有效"
Else
    MsgBox "输入无效,请重新输入"
End If

这里通过 IsNumeric 函数检查输入是否为数字,再通过 CInt 函数将输入转换为整数并与原输入比较,来验证输入是否为有效的整数。

12. 动态生成 HTML 文件(通过写入文件实现)

知识点:可以利用 VBS 的文件操作功能来动态生成 HTML 文件,比如根据用户输入或其他数据生成个性化的网页内容。
例子:

Dim fso, file
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.CreateTextFile("generated.html", True)

file.Write("<html><body><h1>这是动态生成的HTML文件</h1></body></html>")

file.Close()

首先创建 FileSystemObject 对象和文本文件对象,然后向文件中写入 HTML 代码,最后关闭文件,这样就生成了一个简单的动态 HTML 文件。

13. 脚本的调试技巧(如使用 MsgBox 输出变量值进行调试)

知识点:在编写 VBS 脚本时,可能会遇到各种问题,需要进行调试。一种简单的调试技巧是在关键位置使用 MsgBox 输出变量的值,以便查看程序的执行情况和变量的状态。
例子:

Dim num1, num2, sum
num1 = 5
num2 = 3

MsgBox "num1的值:" & num1
MsgBox "num2的值:" & num2

sum = num1 + num2

MsgBox "sum的值:" & sum

在这个简单的加法运算示例中,通过在每一步运算前后使用 MsgBox 输出变量的值,可以清楚地看到程序的执行过程和变量的状态,便于发现可能存在的问题。

14. 利用系统环境变量

知识点:可以利用系统环境变量获取一些与系统相关的信息,比如系统路径、用户目录等。在 VBS 中,可以通过 WScript.Environment 对象来访问系统环境变量。
例子:

Dim env
Set env = WScript.Environment("SYSTEM")

MsgBox "系统路径:" & env.Item("PATH")
MsgBox "用户目录:" & env.Item("USERPROFILE")

这里通过获取 SYSTEM 环境下的 WScript.Environment 对象,然后访问其中的 PATH 和 USERPROFILE 环境变量,并弹出显示它们的值。

15. 跨平台兼容性(虽然 VBS 主要用于 Windows,但有一些注意事项)

知识点:VBScript 是一种主要用于 Windows 系统的脚本语言,但在某些情况下,也可能需要考虑其跨平台兼容性。例如,一些基于 Unix 或 Linux 的系统可能通过一些模拟器或兼容层来运行 VBS 脚本,但功能可能会受到一定限制。
例子:
在 Windows 系统中,以下 VBS 脚本可以正常运行:

MsgBox "这是一个Windows系统下的VBS脚本"

如果要在类似 Wine(在 Linux 系统上模拟 Windows 环境)的环境下运行该脚本,可能需要确保 Wine 已正确安装并配置,并且可能会发现一些在 Windows 下正常运行的功能(如与 Windows 特定系统对象的交互)在模拟环境下可能会受到影响。

;