VB 教程

VB 教程

VB(Visual Basic)是微软推出的入门级编程语言,语法简单、上手快。VBScript 是 VB 的脚本语言版本,常用于 Windows 脚本、ASP 网页和办公自动化。

VB 语言家族

版本用途
Visual Basic 6.0经典桌面应用开发
VB.NET.NET 平台现代开发
VBAOffice 宏(Excel/Word)
VBScriptWindows 脚本、ASP、HTA

为什么学 VBScript

  • Windows 系统自带,wscript/cscript 直接运行
  • 语法简单,适合自动化脚本
  • 与 WMI、文件系统、注册表交互方便
  • 经典 ASP 网页的基础

第一个脚本

WScript.Echo "Hello, VBScript!"

' 或保存为 test.vbs 双击运行
MsgBox "Hello, VBScript!"

运行方式

# 命令行
cscript test.vbs

# 窗口方式
wscript test.vbs

# 直接双击 .vbs 文件

VB 用法

VB 用法

1. 基本语法特点

' 单引号注释
' 不区分大小写
' 语句结束不需要分号

Dim name
name = "张三"
WScript.Echo name

2. 变量声明

Dim x          ' 声明变量
Dim a, b, c    ' 同时声明多个
Dim s As String ' 显式类型(仅 VBA 支持)
x = 100        ' 赋值

' 变量类型(VBScript 只有 Variant)
Dim n
n = 42          ' 数值
n = "hello"     ' 字符串(可改变)

' 数组
Dim arr(5)          ' 下标 0-5,6 个元素
arr(0) = "苹果"
arr(1) = "香蕉"

' 动态数组
Dim dyn()
ReDim dyn(10)       ' 重新分配

3. 常量

Const PI = 3.14159
Const MAX_SIZE = 100

' 内置常量
vbOKOnly = 0
vbInformation = 64
vbCrLf     ' 换行符

4. 输入输出

' 输出到控制台
WScript.Echo "Hello"

' 弹窗
MsgBox "提示信息"
MsgBox "确定继续?", vbYesNo + vbQuestion, "询问"

' 输入框
Dim name
name = InputBox("请输入姓名:", "表单")
WScript.Echo "你好, " & name

5. 运算符

' 算术
5 + 3    ' 8
5 - 3    ' 2
5 * 3    ' 15
5 / 3    ' 1.666...
5 \ 3    ' 1(整除)
5 Mod 3  ' 2(取余)
2 ^ 3    ' 8(幂)

' 比较
=  <>  <  >  <=  >=

' 逻辑
And  Or  Not  Xor

' 字符串连接
"Hello" & " " & "World"

VB 变量

VB 变量

1. 变量命名规则

' 必须以字母开头
' 不能包含空格、点、!,&,$,#,@
' 不能超过 255 个字符
' 不能与关键字重名(如 Dim, If, For)

Dim userName    ' 合法
Dim user_name   ' 合法
' Dim 2name     ' 非法,数字开头

2. Variant 类型

' VBScript 的变量都是 Variant,可存放任意类型
Dim v
v = 100          ' 数字
v = "text"       ' 字符串
v = True         ' 布尔
v = #2026-08-18# ' 日期
v = Array(1,2,3) ' 数组

' 判断类型
TypeName(v)      ' 返回类型名如 "Integer"/"String"
VarType(v)       ' 返回类型编号

3. 作用域

' Dim:脚本级/过程级
Dim globalVar

Sub Test()
    Dim localVar     ' 过程内局部
    localVar = 10
    globalVar = 99   ' 可访问全局
End Sub

' Public:全局公开(类模块)
Public pubVar

' Private:模块私有
Private priVar

' 强制声明
Option Explicit    ' 强制 Dim,未声明报错

4. 生命周期

Dim n
n = 1
n = n + 1       ' 2

' 静态变量(保持值)
Sub Counter()
    Static count   ' 静态:过程结束不销毁
    count = count + 1
    WScript.Echo count
End Sub

Counter   ' 1
Counter   ' 2
Counter   ' 3

5. 类型转换函数

CStr(100)       ' "100"
CInt("42")       ' 42
CLng("123456")   ' 长整型
CSng("3.14")     ' 单精度
CDbl("3.14159")  ' 双精度
CBool("True")    ' True
CDate("2026-08-18")  ' 日期
CByte("255")     ' 字节

' 判断函数
IsNumeric("123")  ' True
IsDate("2026-01-01") ' True
IsArray(arr)      ' True
IsEmpty(v)        ' 是否未初始化

VB 程序

VB 程序

1. 程序结构

' 注释
Option Explicit

' 常量
Const APP_NAME = "MyApp"

' 子程序
Sub Main()
    WScript.Echo "程序开始"
    DoWork
    WScript.Echo "程序结束"
End Sub

' 函数
Function DoWork()
    WScript.Echo "工作中..."
End Function

' 入口调用
Main

2. Sub 子程序

' Sub:无返回值
Sub ShowMessage(msg)
    WScript.Echo "消息: " & msg
End Sub

' 调用
ShowMessage "你好"

3. Function 函数

' Function:有返回值
Function Add(a, b)
    Add = a + b    ' 通过函数名返回
End Function

Function GetName()
    GetName = "张三"
End Function

' 调用
Dim sum
sum = Add(3, 5)
WScript.Echo sum   ' 8

4. 参数传递

' 按引用(默认):修改影响外部
Sub ChangeValue(ByRef x)
    x = x + 100
End Sub

' 按值:修改不影响外部
Sub TryChange(ByVal x)
    x = x + 100
End Sub

Dim n
n = 10
ChangeValue n      ' n = 110
TryChange n        ' n 仍为 110

' 可选参数
Sub Greet(name, Optional greeting = "Hello")
    WScript.Echo greeting & ", " & name
End Sub
Greet "张三"              ' Hello, 张三
Greet "李四", "Hi"        ' Hi, 李四

5. 模块与组织

' WScript 宿主对象
WScript.Echo           ' 输出
WScript.Quit           ' 退出
WScript.Sleep 1000     ' 暂停 1 秒
WScript.Arguments(0)   ' 命令行参数
WScript.ScriptName     ' 脚本名

' 对象创建
Set fso = CreateObject("Scripting.FileSystemObject")
Set shell = CreateObject("WScript.Shell")

VB 条件

VB 条件

1. If-Then-Else

Dim score
score = 85

If score >= 90 Then
    WScript.Echo "优秀"
ElseIf score >= 80 Then
    WScript.Echo "良好"
ElseIf score >= 60 Then
    WScript.Echo "及格"
Else
    WScript.Echo "不及格"
End If

2. 单行 If

' 单行形式
If score >= 60 Then WScript.Echo "通过"

' 单行带 Else
If score >= 60 Then WScript.Echo "通过" Else WScript.Echo "未通过"

3. Select Case

Dim grade
grade = "B"

Select Case grade
    Case "A"
        WScript.Echo "优秀(90+)"
    Case "B"
        WScript.Echo "良好(80+)"
    Case "C"
        WScript.Echo "及格(60+)"
    Case Else
        WScript.Echo "不及格"
End Select

' 多值匹配
Dim fruit
fruit = "苹果"
Select Case fruit
    Case "苹果", "香蕉", "橙子"
        WScript.Echo "水果"
    Case Else
        WScript.Echo "其他"
End Select

' 区间匹配
Dim age
age = 25
Select Case age
    Case Is < 18
        WScript.Echo "未成年"
    Case 18 To 60
        WScript.Echo "成年"
    Case Is > 60
        WScript.Echo "老年"
End Select

4. 逻辑条件组合

Dim username, password
username = "admin"
password = "123456"

If username = "admin" And password = "123456" Then
    WScript.Echo "登录成功"
ElseIf username <> "admin" Then
    WScript.Echo "用户不存在"
Else
    WScript.Echo "密码错误"
End If

' 范围判断
Dim temp
temp = 25
If temp > 0 And temp < 35 Then
    WScript.Echo "温度适宜"
End If

5. 条件表达式技巧

' 三元模拟
Dim x, result
x = 10
result = IIf(x > 0, "正数", "负数")
WScript.Echo result

' 判空
Dim s
If s = "" Or IsEmpty(s) Then
    WScript.Echo "空值"
End If

' 布尔直接判断
Dim ok
ok = True
If ok Then WScript.Echo "为真"
If Not ok Then WScript.Echo "为假"

VB 循环

VB 循环

1. For-Next

' 固定次数循环
For i = 1 To 5
    WScript.Echo "第 " & i & " 次"
Next

' 指定步长
For i = 0 To 10 Step 2
    WScript.Echo i     ' 0,2,4,6,8,10
Next

' 倒序
For i = 5 To 1 Step -1
    WScript.Echo i     ' 5,4,3,2,1
Next

' 提前退出
For i = 1 To 10
    If i = 5 Then Exit For
    WScript.Echo i     ' 1,2,3,4
Next

2. For Each

' 遍历数组
Dim arr, item
arr = Array("苹果", "香蕉", "橙子")
For Each item In arr
    WScript.Echo item
Next

' 遍历集合
Dim fso, folder, file
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\")
For Each file In folder.Files
    WScript.Echo file.Name & " - " & file.Size & " 字节"
Next

3. While-Wend

' 条件循环
Dim n
n = 1
While n <= 5
    WScript.Echo n
    n = n + 1
Wend

4. Do Loop

' Do While(先判断)
Dim i
i = 0
Do While i < 3
    WScript.Echo i
    i = i + 1
Loop

' Do Until(直到条件为真)
i = 0
Do Until i >= 3
    WScript.Echo i
    i = i + 1
Loop

' 后判断(至少执行一次)
i = 10
Do
    WScript.Echo "执行了一次"
Loop While i < 5

' Exit Do 提前退出
i = 0
Do While True
    i = i + 1
    If i > 100 Then Exit Do
Loop

5. 循环嵌套

' 打印乘法表
For i = 1 To 9
    Dim line
    line = ""
    For j = 1 To i
        line = line & i & "x" & j & "=" & (i * j) & " "
    Next
    WScript.Echo line
Next

VB 总结

VB 总结

1. 核心知识点回顾

  • 变量:Dim 声明,Variant 通用类型,作用域控制
  • 流程控制:If/Select Case 条件,For/Do/While 循环
  • 过程:Sub 无返回值,Function 有返回值
  • 对象:CreateObject 创建 COM 对象
  • 错误处理:On Error Resume Next / Err 对象

2. 常用内置函数

' 字符串
Len("hello")      ' 5
Left("hello", 2)  ' he
Right("hello", 2) ' lo
Mid("hello", 2, 3)' ell
InStr("hello", "ll") ' 3
Replace("a-b-c", "-", "+")
UCase("abc") / LCase("ABC")
Trim("  x  ")     ' 去空格
Split("a,b,c", ",")  ' 数组

' 数学
Abs(-5)   ' 5
Int(3.9)  ' 3
Fix(-3.9) ' -3
Round(3.14159, 2) ' 3.14
Sqr(16)   ' 4
Rnd       ' 随机数 0-1

' 日期
Now / Date / Time
Year(Now) / Month(Now) / Day(Now)
Hour(Now) / Minute(Now) / Second(Now)
DateAdd("d", 7, Now)   ' 加 7 天
DateDiff("d", d1, d2)  ' 天数差

3. 错误处理

On Error Resume Next    ' 忽略错误继续
' 危险操作
Dim result
result = 1 / 0          ' 不报错,继续
If Err.Number <> 0 Then
    WScript.Echo "错误: " & Err.Description
    Err.Clear
End If

On Error GoTo 0         ' 恢复默认错误处理

4. 调试技巧

' 输出调试信息
WScript.Echo "debug: " & var

' 弹窗调试
MsgBox var

' 分步执行 + WScript.Echo 跟踪

5. 进阶方向

  • 文件系统操作(FileSystemObject)
  • 注册表读写(WScript.Shell)
  • WMI 系统管理
  • 经典 ASP 网页开发
  • HTA 桌面应用

VB 实例

VB 实例

1. 实例:文件批量重命名

Set fso = CreateObject("Scripting.FileSystemObject")

folderPath = "C:\test"
Set folder = fso.GetFolder(folderPath)

For Each file In folder.Files
    If LCase(fso.GetExtensionName(file.Name)) = "txt" Then
        newName = "backup_" & file.Name
        file.Name = newName
        WScript.Echo "重命名: " & file.Name & " → " & newName
    End If
Next
WScript.Echo "完成!"

2. 实例:文本文件处理

Set fso = CreateObject("Scripting.FileSystemObject")

' 读文件
Set file = fso.OpenTextFile("C:\data.txt", 1)  ' 1=读
Do Until file.AtEndOfStream
    line = file.ReadLine
    If InStr(line, "ERROR") > 0 Then
        WScript.Echo "发现错误行: " & line
    End If
Loop
file.Close

' 写文件
Set outFile = fso.CreateTextFile("C:\result.txt", True)  ' True=覆盖
outFile.WriteLine "处理结果"
outFile.WriteLine "共处理 " & count & " 行"
outFile.Close

3. 实例:系统信息收集

Set shell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

' 获取环境变量
Set env = shell.Environment("SYSTEM")
WScript.Echo "计算机名: " & env("COMPUTERNAME")
WScript.Echo "系统盘: " & env("SystemDrive")

' 磁盘信息
Set drive = fso.GetDrive("C:")
WScript.Echo "C盘总容量: " & drive.TotalSize / 1024 / 1024 / 1024 & " GB"
WScript.Echo "C盘剩余: " & drive.FreeSpace / 1024 / 1024 / 1024 & " GB"

4. 实例:简单计算器

Dim num1, num2, op
num1 = CDbl(InputBox("第一个数:"))
op = InputBox("运算符(+ - * /):")
num2 = CDbl(InputBox("第二个数:"))

Dim result
Select Case op
    Case "+": result = num1 + num2
    Case "-": result = num1 - num2
    Case "*": result = num1 * num2
    Case "/":
        If num2 = 0 Then
            WScript.Echo "不能除 0"
            WScript.Quit
        End If
        result = num1 / num2
    Case Else
        WScript.Echo "无效运算符"
        WScript.Quit
End Select

WScript.Echo num1 & " " & op & " " & num2 & " = " & result

5. 实例:定时提醒

Set shell = CreateObject("WScript.Shell")

Do
    WScript.Sleep 60000    ' 每分钟检查一次
    currentHour = Hour(Now)
    currentMinute = Minute(Now)

    If currentHour = 14 And currentMinute = 0 Then
        MsgBox "下午 2 点了,该喝水休息啦!", vbInformation, "提醒"
        Exit Do
    End If
Loop

VB 函数

VB 函数

1. 字符串函数

Dim s
s = "Hello VBScript"

Len(s)              ' 14
InStr(s, "VB")      ' 7(位置)
InStrRev(s, "e")    ' 13(反向找)
Left(s, 5)          ' Hello
Right(s, 8)         ' VBScript
Mid(s, 7, 2)        ' VB
UCase(s)            ' HELLO VBSCRIPT
LCase(s)            ' hello vbscript
Trim("  x  ")       ' x
LTrim("  x")        ' x
RTrim("x  ")        ' x
Replace(s, "VBScript", "VB Script")
Space(5)            ' 5 个空格
String(3, "*")      ' ***
StrReverse(s)       ' 反转
Split("a,b,c", ",") ' 数组
Join(Array(1,2), "-") ' "1-2"
Asc("A")            ' 65
Chr(65)             ' "A"

2. 数学函数

Abs(-10)        ' 10
Sgn(-5)         ' -1(符号)
Int(3.7)        ' 3(向下取整)
Fix(3.7)        ' 3(截断)
Round(3.14159, 2) ' 3.14
Sqr(16)         ' 4
Exp(1)          ' e
Log(1)          ' 0
Rnd             ' 0-1 随机数
Randomize       ' 初始化随机种子
Int(Rnd * 100) + 1   ' 1-100 随机整数
FormatNumber(12345.678, 2)  ' 12,345.68

3. 日期时间函数

Now             ' 当前日期时间
Date            ' 当前日期
Time            ' 当前时间

Year(Now)       ' 2026
Month(Now)      ' 8
Day(Now)        ' 18
Weekday(Now)    ' 星期几(1=周日)
Hour(Now)       ' 15
Minute(Now)     ' 30
Second(Now)     ' 45

DateAdd("d", 30, Now)    ' 加 30 天
DateAdd("m", 1, Now)     ' 加 1 月
DateAdd("yyyy", 1, Now)  ' 加 1 年
DateDiff("d", #2026-01-01#, Now)  ' 天数差
DatePart("q", Now)       ' 季度
FormatDateTime(Now, 1)   ' 长日期格式
FormatDateTime(Now, 4)   ' 短时间

4. 类型转换函数

CStr(100)          ' "100"
CInt("42.9")        ' 43(四舍五入)
CLng("123456")      ' 123456
CDbl("3.14159")     ' 3.14159
CBool("True")       ' True
CDate("2026-08-18") ' 日期
CByte(255)          ' 255
Hex(255)            ' "FF"(十六进制)
Oct(8)              ' "10"(八进制)
Val("123abc")       ' 123(取数字部分)

5. 判断与杂项函数

IsNumeric("123")    ' True
IsDate("2026-01-01") ' True
IsArray(arr)        ' True
IsEmpty(v)          ' 是否 Empty
IsNull(v)           ' 是否 Null
IsObject(obj)       ' 是否对象
TypeName(v)         ' 类型名
VarType(v)          ' 类型编号
MsgBox / InputBox   ' 交互
Array(...)          ' 创建数组
CreateObject(...)   ' 创建 COM 对象
GetObject(...)      ' 获取对象

VB 关键字

VB 关键字

1. 声明关键字

Dim          ' 声明变量
Const        ' 声明常量
Public       ' 公共声明
Private      ' 私有声明
Static       ' 静态变量
Option Explicit   ' 强制声明
Option Compare Text  ' 文本比较模式

2. 控制流关键字

If / Then / Else / ElseIf / End If
Select / Case / Case Else / End Select
For / Next / To / Step
For Each / In
While / Wend
Do / Loop / Until
Exit For / Exit Do / Exit Sub / Exit Function

3. 过程关键字

Sub / End Sub        ' 子程序
Function / End Function  ' 函数
Call                 ' 调用
ByRef / ByVal        ' 参数传递方式
Optional             ' 可选参数
ParamArray           ' 参数数组
Set / Let            ' 对象/值赋值
New                  ' 创建对象实例

4. 运算关键字

And / Or / Not / Xor  ' 逻辑运算
Mod                  ' 取余
Is                   ' 对象比较
Like                 ' 模式匹配
&                    ' 字符串连接
TypeOf ... Is        ' 类型判断

5. 错误处理关键字

On Error Resume Next  ' 忽略错误
On Error GoTo 0       ' 默认处理
On Error GoTo label   ' 跳转标签
Err                  ' 错误对象
Err.Number / Err.Description
Err.Clear / Err.Raise
Resume / Resume Next  ' 错误后继续

' 其他
Rem        ' 注释(等价单引号)
Class      ' 类定义(高级)
Property   ' 属性(类中)
With ... End With    ' 对象简化访问

VBScript 实例

VBScript 实例

1. 实例:目录清理工具

Set fso = CreateObject("Scripting.FileSystemObject")
Set shell = CreateObject("WScript.Shell")

' 清理 7 天前的临时文件
target = shell.ExpandEnvironmentStrings("%TEMP%")
cutoff = DateAdd("d", -7, Now)

Set folder = fso.GetFolder(target)
deleted = 0

For Each file In folder.Files
    If file.DateLastModified < cutoff Then
        file.Delete
        deleted = deleted + 1
        WScript.Echo "已删除: " & file.Name
    End If
Next

WScript.Echo "共清理 " & deleted & " 个文件"

2. 实例:批量创建文件夹

Set fso = CreateObject("Scripting.FileSystemObject")

basePath = "C:\projects"
names = Array("2026-01", "2026-02", "2026-03", "2026-04")

For Each name In names
    dirPath = basePath & "\" & name
    If Not fso.FolderExists(dirPath) Then
        fso.CreateFolder dirPath
        WScript.Echo "创建: " & dirPath
    Else
        WScript.Echo "已存在: " & dirPath
    End If
Next

3. 实例:读取注册表

Set shell = CreateObject("WScript.Shell")

' 读取注册表值
On Error Resume Next
version = shell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName")
If Err.Number = 0 Then
    WScript.Echo "系统: " & version
Else
    WScript.Echo "读取失败"
    Err.Clear
End If

' 写入注册表
shell.RegWrite "HKCU\Software\MyApp\InstallDate", Date, "REG_SZ"

' 删除注册表
shell.RegDelete "HKCU\Software\MyApp\InstallDate"

4. 实例:网络连通性检查

Set shell = CreateObject("WScript.Shell")

' 执行命令并读取输出
Set exec = shell.Exec("ping -n 2 www.baidu.com")
output = exec.StdOut.ReadAll

If InStr(output, "TTL=") > 0 Or InStr(output, "ms") > 0 Then
    WScript.Echo "网络正常"
Else
    WScript.Echo "网络异常"
End If

5. 实例:Excel 批量处理(通过 VBA 调用)

' VBScript 控制 Excel
Set excel = CreateObject("Excel.Application")
excel.Visible = False

Set wb = excel.Workbooks.Open("C:\data.xlsx")
Set ws = wb.Worksheets(1)

' 读取单元格
WScript.Echo "A1: " & ws.Cells(1, 1).Value

' 写入单元格
ws.Cells(2, 1).Value = "自动写入"

wb.Save
wb.Close
excel.Quit
WScript.Echo "Excel 处理完成"

VBScript 在线实例

VBScript 在线实例

1. 网页中运行 VBScript

VBScript 曾作为浏览器脚本语言(IE 支持),如今主要用于服务器端 ASP 和 Windows 脚本。经典 ASP 中的写法:

<%@ Language="VBScript" %>
<%
    ' ASP 中运行 VBScript
    Dim name
    name = Request.Form("username")
    Response.Write "你好, " & name
%>

2. HTML 中的 VBScript(IE 时代)

<html>
<body>
  <script language="VBScript">
    Sub btnClick()
        MsgBox "你点击了按钮!"
    End Sub
  </script>
  <input type="button" value="点击我">
</body>
</html>

3. HTA 桌面应用

<!-- test.hta:HTML Application -->
<html>
<head>
  <title>HTA 桌面工具</title>
  <hta:application id="app" windowstate="normal"/>
</head>
<body>
  <script language="VBScript">
    Sub ShowInfo()
        MsgBox "计算机: " & CreateObject("WScript.Network").ComputerName
    End Sub
  </script>
  <button>显示系统信息</button>
</body>
</html>

4. 快速测试环境

# 本机运行 .vbs
cscript test.vbs

# 在线学习工具
# VBScript 编辑器 + cscript 即时运行
# 或安装 IIS 跑经典 ASP

5. 练习建议

  • 写一个文件批量处理脚本
  • 写一个系统信息采集脚本
  • 用 HTA 做一个小工具界面
  • 在 ASP 中做表单处理

VBScript 参考手册

VBScript 参考手册

1. 内置函数速查

类别函数
字符串Len、Left、Right、Mid、InStr、Replace、Split、Join、UCase、LCase、Trim
数学Abs、Int、Fix、Round、Sqr、Exp、Log、Rnd、Sgn
日期Now、Date、Time、Year、Month、Day、Hour、DateAdd、DateDiff、FormatDateTime
转换CStr、CInt、CLng、CDbl、CBool、CDate、Hex、Oct、Val
判断IsNumeric、IsDate、IsArray、IsEmpty、IsNull、TypeName、VarType
格式FormatNumber、FormatCurrency、FormatPercent

2. 对象速查

对象用途
WScript宿主对象:Echo、Sleep、Quit、Arguments
WScript.Shell运行程序、环境变量、注册表、快捷方式
Scripting.FileSystemObject文件/文件夹/驱动器操作
Scripting.Dictionary字典(键值对)
WScript.Network网络与共享信息
WMI(WinMgmts)系统管理信息

3. 常用语句速查

Dim / Const           声明
If / Select Case      条件
For / For Each / Do / While   循环
Sub / Function        过程
On Error              错误处理
Option Explicit       强制声明
Set                   对象赋值
With ... End With     对象访问

4. 常量速查

vbOKOnly=0  vbOKCancel=1  vbYesNo=4
vbInformation=64  vbExclamation=48
vbCritical=16  vbQuestion=32
vbCrLf(回车换行)  vbTab(Tab)  vbNullChar(空字符)
vbMonday=1 ... vbSunday=7

5. 命令行参数

' 运行: cscript test.vbs 参数1 参数2
Dim arg
For Each arg In WScript.Arguments
    WScript.Echo "参数: " & arg
Next

' 命名参数
WScript.Arguments.Named("name")

VBScript 教程

VBScript 教程

VBScript(Visual Basic Scripting Edition)是微软的脚本语言,基于 VB 语法,由 Windows 脚本宿主(WScript/CScript)或 ASP 引擎解释执行。

1. 学习总结

  • 语法基础:Dim 变量、Variant 类型、If/Select 条件、For/Do 循环
  • 过程:Sub 无返回值、Function 有返回值、ByRef/ByVal 参数
  • 对象模型:WScript.Shell、FileSystemObject、WMI 等 COM 组件
  • 错误处理:On Error Resume Next + Err 对象

2. 典型应用

  • Windows 自动化脚本(文件、注册表、任务)
  • 系统管理(WMI 查询、服务控制)
  • 登录脚本与启动脚本
  • 经典 ASP 网页服务端逻辑
  • Office 自动化(通过 COM)

3. 安全注意事项

  • .vbs 文件是常见病毒载体,不运行来源不明的脚本
  • 企业环境建议限制 VBScript 执行策略
  • 注册表修改前备份
  • 涉及删除操作前二次确认

4. 学习资源

  • 微软官方文档(VBScript 语言参考)
  • W3CSchool VBScript 教程
  • 脚本之家、CSDN 实例代码

5. 现代替代

新项目推荐使用 PowerShell(功能更强、更安全),VBScript 主要用于维护存量系统。

# PowerShell 等价示例
Get-ChildItem C:\temp -Filter *.log |
    Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) } |
    Remove-Item -Force

VBScript 教程到此结束,掌握其思想后迁移到 PowerShell 会很容易。

第 1 / 14 节