一、VBS 脚本概述
1.1 VBS 简介
VBS(VBScript)是 Microsoft Visual Basic Scripting Edition 程序开发语言 Visual Basic 家族的最新成员,它将灵活的脚本应用于更广泛的领域,包括 Microsoft Internet Explorer 中的 Web 客户机脚本和 Microsoft Internet Information Service 中的 Web 服务器脚本。
参考文档:https://www.jb51.net/shouce/vbs/vtoriVBScript.htm
1.2 VBS脚本解释器
VBS脚本 是由 C:\Windows\System32\wscript.exe
查询解释执行的,如果点击 VBS 脚本时提示找不到 执行查询 或 本机 C:\Windows\System32\wscript.exe
可从其它 Windows 系统机器上 copy 该程序到 C:\Windows\System32\
目录下。
二、VSB脚本示例
2.1 常见用法
1
2
3
4
5
|
' 弹出消息提示框 显示消息
world="world!"
WScript.Echo "Hello " & world ' & 连接符
MsgBox "Hello world!"
|
2.2 VBS 示例程序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
Dim curdate, dateStr, fso, file, strLine, searchString, logFile, finFlagFile, preDay
' 获取当前日期: Y/m/d 2024/1/2
curdate = date()
preDay = day(curdate)
dateStr = year(curdate) & "-" & right("00" & month(curdate), 2) & "-" & Right("00" & day(curdate), 2) ' Y-mm-dd 2024-01-02
logFile = "E:\test1\test" & dateStr & ".log" ' log 文件
finFlagFile = "D:\test1\test" & dateStr & ".log" ' 成功(新创建的)标志文件
' WScript.Echo "logFile: " & logFile
' WScript.Echo "finFlagFile: " & finFlagFile
searchString = "state:finished progess:100%" ' 要搜索的字符串
Set fso = CreateObject("Scripting.FileSystemObject")
Do Until fso.FileExists(finFlagFile) Or (day(curdate) <> preDay)
If fso.FileExists(logFile) Then
Set file = fso.OpenTextFile(logFile, 1) ' 1 表示只读模式
Do Until file.AtEndOfStream
strLine = file.ReadLine
Loop
file.Close
WScript.Echo "Last line: " & strLine
If InStr(strLine, searchString) > 0 Then
' WScript.Echo "找到字符串: " & searchString
' 使用CreateTextFile方法创建一个新的文本文件
' 第一个参数是文件路径
' 第二个参素是可选参数,用于设置是否覆盖已存在的文件。True - 覆盖,False - 不覆盖
Set file = fso.CreateTextFile(finFlagFile, True)
file.WriteLine strLine ' WriteLine 方法用于写入文本并在写入后添加换行符。
' 关闭文件
file.Close
Else
WScript.Echo "Not String: " & searchString
End If
Else
WScript.Echo "File not xists: " & logFile
End If
' 暂停 1000 * 60 * 5 毫秒(即5分钟秒)
WScript.Sleep 1000 * 5
curdate = date() ' 更新日期
Loop
' 清理对象以释放系统资源
Set file = Nothing
Set fso = Nothing
|
三、VBS 脚本设置计划任务定时执行
3.1 设置 Windows 任务计划
在 Windows 系统搜索 中 输入 任务计划程序 查找 或 在 Windows 管理工具中找到 任务计划程序 程序, 如下图
点击打开 任务计划程序 管理器,如下图
点击右侧创建任务 或 创建 本地任务 按指引设置定时任务。
3.2 VBS 定时任务触发执行时弹出选择执行程序 问题
问题:任务计划程序 触发脚本运行时将弹框提示下图 2 处所示提示框,提示 选择 如何打开文件。
设置好 VBS 定时任务后,单触发自动执行 或 如上图所示 1 处 点击 运行 后,弹出 2 处 所示 提示框,在电脑上 查找 C:\Windows\System32\wscript.exe
解释器 执行时,弹出 4 处所示错误提示框。
造成上述无法执行 VBS 脚本定时任务的原因是 VBS 脚本的 路径 中 存在 空格等 特殊字符,上图 5 处 的路径自动添加了 "
双引号所致。
处理方法:点击上图右侧 1 处下面的 导出… 按钮,将任务导出到 .xml 文件中,打开导出的 .xml 文件 将 <Command> </Command>
中的 脚本路径中的 "
双引号删除,如下代码所示:
1
2
3
4
5
6
|
<Actions Context="Author">
<Exec>
<!-- <Command>"D:\test1\test script.vbs"</Command> -->
<Command>D:\test1\test script.vbs</Command>
</Exec>
</Actions>
|
修改后保存文件,将原 任务删除后, 点击 上图右侧 1处 下面的 导人任务 按钮,选择刚才编辑的 .xml 文件 导入任务 即可成执行, 如下图: