
Windows系统下VBScript脚本编写实战从基础到高级应用在Windows系统管理中自动化脚本一直是提升效率的利器。VBScript作为微软原生支持的脚本语言虽然在新系统中逐渐被PowerShell取代但在遗留系统维护、特定场景自动化中仍然发挥着重要作用。本文将带您从零开始掌握VBScript的核心技能包括基础语法、文件操作、系统管理等实用技巧。1. VBScript基础入门1.1 环境准备与执行方式VBScript作为Windows内置脚本引擎无需额外安装即可使用。创建一个简单的VBScript脚本只需要三个步骤新建文本文件并重命名为.vbs扩展名使用记事本或其他文本编辑器编写脚本内容双击运行或通过命令行执行VBScript有两种主要的执行方式执行方式命令适用场景图形界面wscript script.vbs需要显示对话框的交互式脚本命令行cscript script.vbs后台运行、输出到命令行的脚本提示在开发调试阶段建议使用cscript方式执行这样可以在命令行中看到错误信息。1.2 第一个VBScript程序让我们从经典的Hello World开始 这是单行注释 MsgBox Hello, VBScript World!, vbInformation, 欢迎这段代码会弹出一个信息对话框包含标题和图标。VBScript的语法特点包括不区分大小写使用单引号进行注释语句可以写在一行也可以换行变量使用Dim声明但不是必须的2. VBScript核心语法2.1 变量与数据类型VBScript是弱类型语言变量可以存储任何类型的数据。常见数据类型包括String文本数据如HelloInteger整数如42Boolean逻辑值True或FalseDate日期时间值Object对象引用变量声明和使用示例Dim userName, userAge userName 张三 userAge 30 动态类型示例 Dim dynamicVar dynamicVar 文本 现在是字符串 dynamicVar 123 现在是数字2.2 流程控制结构VBScript支持标准的流程控制语句包括条件判断和循环条件判断示例Dim score score InputBox(请输入您的分数) If IsNumeric(score) Then score CInt(score) Select Case score Case 90 To 100 MsgBox 优秀 Case 80 To 89 MsgBox 良好 Case 60 To 79 MsgBox 及格 Case Else MsgBox 不及格 End Select Else MsgBox 请输入有效的数字分数 End If循环结构示例 For循环 For i 1 To 5 WScript.Echo 循环次数 i Next While循环 Dim counter counter 0 Do While counter 3 WScript.Echo While循环 counter counter counter 1 Loop3. 文件系统操作实战3.1 FileSystemObject对象使用VBScript通过FileSystemObject(FSO)对象模型提供文件系统访问能力。以下是常见操作 创建FSO对象 Dim fso Set fso CreateObject(Scripting.FileSystemObject) 检查文件是否存在 If fso.FileExists(C:\test.txt) Then WScript.Echo 文件已存在 Else 创建新文件并写入内容 Dim file Set file fso.CreateTextFile(C:\test.txt, True) file.WriteLine 这是第一行内容 file.WriteLine 这是第二行内容 file.Close End If 读取文件内容 If fso.FileExists(C:\test.txt) Then Set file fso.OpenTextFile(C:\test.txt, 1) 1表示只读 Do Until file.AtEndOfStream WScript.Echo file.ReadLine Loop file.Close End If3.2 文件夹与文件管理VBScript可以方便地进行文件夹和文件管理操作Dim fso, folder, files, subfolders Set fso CreateObject(Scripting.FileSystemObject) 创建文件夹 If Not fso.FolderExists(C:\MyFolder) Then Set folder fso.CreateFolder(C:\MyFolder) End If 遍历文件夹内容 Set folder fso.GetFolder(C:\MyFolder) Set files folder.Files Set subfolders folder.SubFolders WScript.Echo 文件列表 For Each file In files WScript.Echo file.Name - file.Size 字节 Next WScript.Echo 子文件夹列表 For Each subfolder In subfolders WScript.Echo subfolder.Name Next4. 高级应用场景4.1 注册表操作VBScript可以通过WScript.Shell对象访问Windows注册表Dim shell Set shell CreateObject(WScript.Shell) 读取注册表值 On Error Resume Next 避免错误中断脚本 Dim regValue regValue shell.RegRead(HKCU\Software\Microsoft\Windows\CurrentVersion\Run\MyApp) If Err.Number 0 Then WScript.Echo 注册表键不存在或访问被拒绝 Err.Clear Else WScript.Echo 注册表值 regValue End If On Error GoTo 0 写入注册表值 shell.RegWrite HKCU\Software\MyApp\Settings\Timeout, 30, REG_DWORD注意修改注册表可能影响系统稳定性操作前建议备份注册表。4.2 系统管理与自动化VBScript可以用于各种系统管理任务例如服务管理Dim serviceName, computer serviceName Spooler 打印后台处理程序服务 computer . 本地计算机 Dim objWMIService, colServices Set objWMIService GetObject(winmgmts:\\ computer \root\cimv2) Set colServices objWMIService.ExecQuery(Select * from Win32_Service Where Name serviceName ) For Each objService in colServices WScript.Echo 服务名称: objService.Name WScript.Echo 显示名称: objService.DisplayName WScript.Echo 状态: objService.State WScript.Echo 启动类型: objService.StartMode 启动服务 If objService.State Running Then objService.StartService() WScript.Echo 服务已启动 End If Next进程管理 结束指定进程 Dim processName processName notepad.exe Dim objWMIService, colProcesses Set objWMIService GetObject(winmgmts:\\.\root\cimv2) Set colProcesses objWMIService.ExecQuery(Select * from Win32_Process Where Name processName ) For Each objProcess in colProcesses objProcess.Terminate() WScript.Echo 已终止进程 processName Next5. 错误处理与调试技巧5.1 错误处理机制VBScript提供基本的错误处理能力On Error Resume Next 开启错误处理 可能出错的代码 Dim result result 1 / 0 除零错误 If Err.Number 0 Then WScript.Echo 错误号 Err.Number WScript.Echo 错误描述 Err.Description WScript.Echo 错误源 Err.Source Err.Clear 清除错误 End If On Error GoTo 0 关闭错误处理5.2 调试与日志记录在脚本中添加日志功能可以帮助调试Sub WriteLog(message) Dim fso, logFile Set fso CreateObject(Scripting.FileSystemObject) 以追加模式打开日志文件 Set logFile fso.OpenTextFile(C:\script.log, 8, True) 8追加模式 logFile.WriteLine Now - message logFile.Close End Sub 使用日志函数 WriteLog 脚本开始执行 业务逻辑代码 On Error Resume Next Dim obj Set obj CreateObject(NonExistent.Object) If Err.Number 0 Then WriteLog 创建对象失败 Err.Description Err.Clear End If WriteLog 脚本执行完成在实际项目中我经常使用这种日志记录方式来跟踪脚本执行情况特别是在计划任务中运行的脚本日志文件成为了解脚本运行状态的重要依据。