VBScript 用法详解
VBScript(Visual Basic Scripting Edition)是一种简单易学的脚本语言,主要用于:
- Windows 系统自动化(通过 .vbs 文件或 Windows Script Host)
- 旧版 ASP 网页服务器端脚本
- 自动化测试工具(如 HP UFT/QTP)
下面从实际用法角度详细说明常见场景、语法规则和实用示例。
1. 运行方式
- 独立脚本文件:用记事本编写,保存为
.vbs后缀,双击运行或用cscript/wscript执行。 wscript:图形界面(MsgBox 等弹出窗口)cscript:命令行模式(适合后台运行)- 嵌入 HTML(仅旧版 IE 支持):
<script type="text/vbscript">
MsgBox "Hello"
</script>
- ASP 页面(服务器端):
<% Response.Write "Hello World" %>
2. 基本语法规则
- 不区分大小写
- 语句以换行分隔,或用
:分隔多条语句在一行 - 注释用
'或Rem - 变量无需声明类型,直接赋值即可(默认 Variant 类型)
- 推荐用
Option Explicit强制声明变量,避免拼写错误
Option Explicit ' 强制声明变量,好习惯!
Dim name
Dim age
name = "张三"
age = 30
MsgBox "姓名:" & name & vbCrLf & "年龄:" & age
3. 常用内置函数和对象
| 函数/对象 | 用法示例 | 说明 |
|---|---|---|
| MsgBox | MsgBox “提示内容”, vbInformation, “标题” | 弹出消息框 |
| InputBox | str = InputBox(“请输入姓名:”) | 获取用户输入 |
| Len(str) | MsgBox Len(“abc”) ‘ 输出 3 | 字符串长度 |
| Left(str, n) | Left(“abcde”, 3) ‘ “abc” | 左起取 n 个字符 |
| Right(str, n) | Right(“abcde”, 3) ‘ “cde” | 右起取 n 个字符 |
| Mid(str, start, len) | Mid(“abcde”, 2, 3) ‘ “bcd” | 从指定位置取子串 |
| UCase / LCase | UCase(“abc”) ‘ “ABC” | 转大/小写 |
| Date / Time / Now | MsgBox Now | 当前日期时间 |
| Year/Month/Day | MsgBox Year(Now) | 取年/月/日 |
4. 流程控制
If…Then…Else
Dim score
score = InputBox("请输入成绩:")
If score >= 90 Then
MsgBox "优秀"
ElseIf score >= 80 Then
MsgBox "良好"
ElseIf score >= 60 Then
MsgBox "及格"
Else
MsgBox "不及格"
End If
Select Case
Select Case weekDay
Case 1, 7
MsgBox "周末"
Case 2 To 6
MsgBox "工作日"
Case Else
MsgBox "无效"
End Select
For…Next
Dim i
For i = 1 To 10 Step 2 ' 步长为2
MsgBox i
Next
Do…Loop
Dim num
num = 0
Do While num < 5
MsgBox num
num = num + 1
Loop
5. 函数与过程
Function(有返回值)
Function Add(a, b)
Add = a + b
End Function
MsgBox Add(15, 25) ' 40
Sub(无返回值)
Sub SayHello(name)
MsgBox "Hello, " & name
End Sub
Call SayHello("李四")
' 或直接
SayHello "李四"
6. 文件系统操作(最实用场景之一)
使用 Scripting.FileSystemObject
Dim fso, folder, file, ts
Set fso = CreateObject("Scripting.FileSystemObject")
' 创建文件夹
If Not fso.FolderExists("C:\MyTest") Then
fso.CreateFolder("C:\MyTest")
End If
' 创建并写入文本文件
Set ts = fso.CreateTextFile("C:\MyTest\log.txt", True)
ts.WriteLine "当前时间:" & Now
ts.WriteLine "这是一行测试内容"
ts.Close
MsgBox "文件写入完成!"
读取文件
Set ts = fso.OpenTextFile("C:\MyTest\log.txt", 1) ' 1=读取
Do Until ts.AtEndOfStream
MsgBox ts.ReadLine
Loop
ts.Close
7. 注册表操作
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
' 写注册表
WshShell.RegWrite "HKCU\Software\MyApp\Name", "Grok", "REG_SZ"
' 读注册表
MsgBox WshShell.RegRead("HKCU\Software\MyApp\Name")
8. 执行外部程序
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
' 静默运行
WshShell.Run "notepad.exe", 1, False
' 等待程序结束
WshShell.Run "cmd /c ping 127.0.0.1", 0, True
9. 错误处理
On Error Resume Next ' 忽略错误,继续执行
' 执行可能出错的代码
Set file = fso.OpenTextFile("不存在的文件.txt")
If Err.Number <> 0 Then
MsgBox "错误:" & Err.Description
Err.Clear
End If
小结
VBScript 虽然已被弃用,但仍然是 Windows 系统自动化最简单高效的工具之一。适合快速编写小工具、批量处理文件、修改注册表等任务。
如果你有具体需求(如批量重命名文件、监控文件夹、自动化 Excel 操作等),告诉我,我可以提供完整可运行的 .vbs 示例代码!