VBScript 教程
VBScript(Visual Basic Script)是微软开发的一种轻量级脚本语言,主要用于自动化任务、网页开发(尤其在ASP中)和Windows系统管理。以下是一个简明实用的VBScript教程,涵盖基础知识和常见用法,适合初学者快速上手。
1. VBScript 简介
- 定义: VBScript 是基于 Visual Basic 的脚本语言,运行在 Windows 环境中,通常用于客户端(IE浏览器)或服务器端(ASP)。
- 特点:
- 语法简单,易于学习。
- 无需编译,直接嵌入HTML或以
.vbs
文件运行。 - 常用于Windows脚本宿主(WSH)或自动化任务。
- 运行环境:
- Windows 系统自带 VBScript 引擎。
- 可在文本编辑器(如记事本)编写,保存为
.vbs
文件双击运行,或嵌入HTML运行于浏览器。
2. 基本语法
2.1 编写第一个 VBScript
在记事本中输入以下代码,保存为 hello.vbs
,双击运行:
MsgBox "Hello, VBScript!"
- 说明:
MsgBox
是一个弹出消息框的函数,显示文本“Hello, VBScript!”。
2.2 嵌入 HTML
在HTML文件中嵌入VBScript:
<html>
<head>
<title>VBScript 示例</title>
</head>
<body>
<script language="VBScript">
MsgBox "欢迎使用 VBScript!"
</script>
</body>
</html>
- 保存为
.html
文件,用Internet Explorer打开(注:现代浏览器如Chrome不支持VBScript)。
2.3 注释
- 单行注释:使用
'
或REM
' 这是一条单行注释
REM 这也是单行注释
- VBScript 不支持多行注释。
2.4 变量
- 变量无需声明类型,默认是
Variant
类型。 - 使用
Dim
声明变量:
Dim name
name = "Alice"
MsgBox "Hello, " & name
- 注意: 变量名不区分大小写,
name
和Name
是同一个变量。
2.5 数据类型
VBScript 只有一种数据类型:Variant
,但它可以存储不同子类型:
- 整数 (
Integer
) - 浮点数 (
Double
) - 字符串 (
String
) - 布尔值 (
Boolean
) - 日期 (
Date
) - 对象 (
Object
)
检查类型:
Dim num
num = 42
MsgBox VarType(num) ' 返回 2,表示整数
2.6 运算符
- 算术运算符:
+
,-
,*
,/
,\
(整除),Mod
(取模) - 比较运算符:
=
,<>
,<
,>
,<=
,>=
- 逻辑运算符:
And
,Or
,Not
- 字符串连接:
&
Dim a, b
a = 10
b = 20
MsgBox a + b ' 输出 30
MsgBox a & b ' 输出 "1020"(字符串连接)
3. 控制结构
3.1 条件语句
Dim score
score = 85
If score >= 60 Then
MsgBox "及格"
Else
MsgBox "不及格"
End If
- 支持多条件:
If score >= 90 Then
MsgBox "优秀"
ElseIf score >= 60 Then
MsgBox "及格"
Else
MsgBox "不及格"
End If
3.2 循环
- For 循环:
Dim i
For i = 1 To 5
MsgBox "第 " & i & " 次循环"
Next
- While 循环:
Dim i
i = 1
While i <= 5
MsgBox "第 " & i & " 次循环"
i = i + 1
Wend
- Do While/Until 循环:
Dim i
i = 1
Do While i <= 5
MsgBox "第 " & i & " 次循环"
i = i + 1
Loop
3.3 退出循环
Exit For
: 退出 For 循环Exit Do
: 退出 Do 循环
For i = 1 To 10
If i = 5 Then Exit For
MsgBox i
Next
4. 函数与过程
4.1 子过程 (Sub)
定义一个不返回值的子过程:
Sub SayHello(name)
MsgBox "Hello, " & name
End Sub
Call SayHello("Alice") ' 调用子过程
- 也可以省略
Call
直接写SayHello "Alice"
4.2 函数 (Function)
定义一个返回值的函数:
Function Add(a, b)
Add = a + b
End Function
MsgBox Add(3, 4) ' 输出 7
5. 数组
- 声明数组:
Dim arr(2) ' 声明一个长度为3的数组(索引0到2)
arr(0) = "Apple"
arr(1) = "Banana"
arr(2) = "Orange"
MsgBox arr(1) ' 输出 Banana
- 动态数组:
Dim dynArr()
ReDim dynArr(2) ' 动态分配大小
dynArr(0) = 10
ReDim Preserve dynArr(3) ' 保留数据,扩展大小
6. 常用内置函数
- 字符串操作:
Len(str)
: 返回字符串长度Left(str, n)
: 取左边 n 个字符Right(str, n)
: 取右边 n 个字符Mid(str, start, len)
: 取子字符串LCase(str)
,UCase(str)
: 转换为小写/大写
Dim str
str = "Hello World"
MsgBox Len(str) ' 输出 11
MsgBox Left(str, 5) ' 输出 Hello
- 日期和时间:
Now()
: 当前日期和时间Date()
: 当前日期Time()
: 当前时间
MsgBox Now ' 输出当前日期和时间,如 9/19/2025 6:41:00 PM
- 类型转换:
CStr(val)
: 转换为字符串CInt(val)
: 转换为整数CDbl(val)
: 转换为双精度浮点数
Dim num
num = "123"
MsgBox CInt(num) + 10 ' 输出 133
7. 文件操作(使用 FileSystemObject)
VBScript 可通过 FileSystemObject
操作文件:
Dim fso, file
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.CreateTextFile("C:\test.txt", True)
file.WriteLine "Hello, VBScript!"
file.Close
- 读取文件:
Dim fso, file, content
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\test.txt", 1)
content = file.ReadAll
MsgBox content
file.Close
8. 错误处理
VBScript 使用 On Error Resume Next
忽略错误:
On Error Resume Next
Dim x
x = 1 / 0 ' 除零错误
If Err.Number <> 0 Then
MsgBox "错误: " & Err.Description
Err.Clear
End If
9. 实际应用示例
9.1 自动化任务:创建文件夹
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists("C:\MyFolder") Then
fso.CreateFolder("C:\MyFolder")
MsgBox "文件夹已创建"
Else
MsgBox "文件夹已存在"
End If
9.2 网页交互
在HTML中获取用户输入:
<html>
<body>
<input type="text" id="userInput">
<button onclick="ShowInput()">提交</button>
<script language="VBScript">
Sub ShowInput()
Dim input
input = Document.getElementById("userInput").Value
MsgBox "你输入了: " & input
End Sub
</script>
</body>
</html>
10. 注意事项
- 兼容性: VBScript 仅在 Internet Explorer 和 Windows 环境中完全支持,现代浏览器(如 Chrome、Firefox)不支持。
- 安全性: 由于 VBScript 可直接操作系统资源,运行不受信任的脚本可能有安全风险。
- 替代方案: 对于现代开发,推荐使用 JavaScript 或 PowerShell 替代 VBScript。
11. 学习资源
- 官方文档: 微软 MSDN VBScript 参考(https://learn.microsoft.com/en-us/previous-versions//t0aew7h6(v=vs.85))。
- 实践: 尝试编写小型自动化脚本,如批量重命名文件或读取Excel数据。
- 社区: 搜索 Stack Overflow 或相关论坛,获取 VBScript 问题的解决方案。
如果需要更深入的某个部分(如文件操作、COM对象、数据库连接)或具体示例,请告诉我!