VBS是基于Visual Basic的脚本语言。VBS的全称是:Microsoft Visual Basic Script Edition。(微软公司可视化BASIC脚本版)。
其语言类似Visual Basic(VB)。(此处不适合无编程经验的小白)
InputBox
InputBox 函数显示一个对话框,用户可在其中输入文本并/或点击一个按钮。如果用户点击点击 OK 按钮或按键盘上的 ENTER 键, 则 InputBox 函数返回文本框中的文本。如果用户点击 Cancel 按钮,函数返回一个空字符串(“”)。
注意:如果同时规定 helpfile 和 context 参数,则会向对话框添加一个 Help 按钮。
1 | 'InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context]) |
MsgBox
MsgBox 函数显示一个消息框,等待用户点击某个按钮,然后返回指示被点击按钮的值。
1 | 'MsgBox(prompt[,buttons][,title][,helpfile,context]) |
其中buttons有
- 0 = vbOKOnly - 只显示 OK 按钮
- 1 = vbOKCancel - 显示 OK 和 Cancel 按钮
- 2 = vbAbortRetryIgnore - 显示 Abort、Retry 和 Ignore 按钮
- 3 = vbYesNoCancel - 显示 Yes、No 和 Cancel 按钮
- 4 = vbYesNo - 显示 Yes 和 No 按钮
- 5 = vbRetryCancel - 显示 Retry 和 Cancel 按钮
- 16 = vbCritical - 显示临界信息图标
- 32 = vbQuestion - 显示警告查询图标
- 48 = vbExclamation - 显示警告消息图标
- 64 = vbInformation - 显示信息消息图标
- 0 = vbDefaultButton1 - 第一个按钮为默认按钮
- 256 = vbDefaultButton2 - 第二个按钮为默认按钮
- 512 = vbDefaultButton3 - 第三个按钮为默认按钮
- 768 = vbDefaultButton4 - 第四个按钮为默认按钮
- 0 = vbApplicationModal - 应用程序模式(用户必须响应消息框才能继续在当前应用程序中工作)
- 4096 = vbSystemModal - 系统模式(在用户响应消息框前,所有应用程序都被挂起)
MsgBox 函数返回下面的值:
- 1 = vbOK - OK 按钮被点击
- 2 = vbCancel - Cancel 按钮被点击
- 3 = vbAbort - Abort 按钮被点击
- 4 = vbRetry - Retry 按钮被点击
- 5 = vbIgnore - Ignore 按钮被点击
- 6 = vbYes - Yes 按钮被点击
- 7 = vbNo - No 按钮被点击
声明(创建)VBScript 变量
可以通过 Dim、Public 或 Private 语句甚至直接用名称声明 VBScript 变量(和js差不多)。单引号注释
1 | Dim x |
set一般用来给Object型变量赋值
1 | Dim w |
条件语句
在 VBScript 中,我们可以使用四种条件语句:
- If stat语句ement - 假如您希望在条件为 true 时执行一系列的代码,可以使用这个语句
- If…Then…Else 语句 - 假如您希望执行两套代码其中之一,可以使用这个语句
- If…Then…ElseIf 语句 - 假如您希望选择多套代码之一来执行,可以使用这个语句
- Select Case 语句 - 假如您希望选择多套代码之一来执行,可以使用这个语句
If…Then…Else
1 | If i=10 Then MsgBox("Hello") |
If…Then…ElseIf
1 | i=11 |
Select Case
1 | d=weekday(date) |
循环
在 VBScript 中,我们可以使用四种循环语句:
- For…Next 语句 - 运行一段代码指定的次数
- For Each…Next 语句 - 针对集合中的每个项目或者数组中的每个元素来运行某段代码
- Do…Loop 语句 - 运行循环,当条件为 true 或者直到条件为 true 时
- While…Wend 语句 - 不要使用这个语句 - 请使用 Do…Loop 语句代替它
For…Next
请使用 For…Next 语句运行一段代码指定的次数。
For 语句规定计数变量(i)以及它的初始值和结束值。Next 语句会以 1 作为步进值来递增变量(i)。
1 | For i = 0 To 5 |
通过 Step 关键词,您可以规定计数变量递增或递减的步进值。
1 | For i=2 To 10 Step 2 |
您可以通过 Exit For 关键词退出 For…Next 语句。
For Each…Next
For Each…Next 针对集合中的每个项目或者数组中的每个元素来重复运行某段代码。
1 | Dim cars(2) |
Do…Loop
无限循环
1 | Do While i>10 |
退出循环 Exit Do
函数
1 | Function myfunction(argument1,argument2) |
子程序
与函数的区别是“无返回值”
1 | Sub mysub(argument1,argument2) |
运算符
1、算术运算符
- 加
- 减
- 乘
/ 除
\ 整除
mod 取余(%)
^ 幂
& 字符串连接,字符串即用“”包围的内容
2、比较运算符
= 等于
<> 不等于
< 小于
大于
<= 小于等于
= 大于等于
Is 对象引用比较
3、逻辑运算符
not 非
and 与
or 或
xor 异或
eqv 等价
imp 隐含
出错继续执行
1 | On Error Resume Next |
文件操作
创建文件
dim fso, f
set fso =server.CreateObject(“Scripting.FileSystemObject”)
set f = fso.CreateTextFile(“C:\test.txt”, true) ‘第二个参数表示目标文件存在时是否覆盖
‘‘‘
f.Write(“写入内容”)
f.WriteLine(“写入内容并换行”)
f.WriteBlankLines(3) ‘写入三个空白行(相当于在文本编辑器中按三次回车)
f.Close()
set f = nothing
set fso = nothing
打开并读文件
dim fso, f
set fso = server.CreateObject(“Scripting.FileSystemObject”)
set f = fso.OpenTextFile(“C:\test.txt”, 1, false) ‘第二个参数 1 表示只读打开,第三个参数表示目标文件不存在时是否创建
f.Skip(3) ‘将当前位置向后移三个字符
f.SkipLine() ‘将当前位置移动到下一行的第一个字符,注意:无参数
response.Write f.Read(3) ‘从当前位置向后读取三个字符,并将当前位置向后移三个字符
response.Write f.ReadLine() ‘从当前位置向后读取直到遇到换行符(不读取换行符),并将当前位置移动到下一行的第一个字符,注意:无参数
response.Write f.ReadAll() ‘从当前位置向后读取,直到文件结束,并将当前位置移动到文件的最后
if f.atEndOfLine then
response.Write(“一行的结尾!”)
end if
if f.atEndOfStream then
response.Write(“文件的结尾!”)
end if
f.Close()
set f = nothing
set fso = nothing
打开并写文件
dim fso, f
set fso = server.CreateObject(“Scripting.FileSystemObject”)
set f = fso.OpenTextFile(“C:\test.txt”, 2, false) ‘第二个参数 2 表示重写,如果是 8 表示追加
f.Write(“写入内容”)
f.WriteLine(“写入内容并换行”)
f.WriteBlankLines(3) ‘写入三个空白行(相当于在文本编辑器中按三次回车)
f.Close()
set f = nothing
set fso = nothing
判断文件是否存在
dim fso
set fso = server.CreateObject(“Scripting.FileSystemObject”)
if fso.FileExists(“C:\test.txt”) then
response.Write(“目标文件存在”)
else
response.Write(“目标文件不存在”)
end if
set fso = nothing
移动文件
dim fso
set fso = server.CreateObject(“Scripting.FileSystemObject”)
call fso.MoveFile(“C:\test.txt”, “D:\test111.txt”) ‘两个参数的文件名部分可以不同
set fso = nothing
复制文件
dim fso
set fso = server.CreateObject(“Scripting.FileSystemObject”)
call fso.CopyFile(“C:\test.txt”, “D:\test111.txt”) ‘两个参数的文件名部分可以不同
set fso = nothing
删除文件
dim fso
set fso = server.CreateObject(“Scripting.FileSystemObject”)
fso.DeleteFile(“C:\test.txt”)
set fso = nothing
创建文件夹
dim fso
set fso = server.CreateObject(“Scripting.FileSystemObject”)
fso.CreateFolder(“C:\test”) ‘目标文件夹的父文件夹必须存在
set fso = nothing
判断文件夹是否存在
dim fso
set fso = server.CreateObject(“Scripting.FileSystemObject”)
if fso.FolderExists(“C:\Windows”) then
response.Write(“目标文件夹存在”)
else
response.Write(“目标文件夹不存在”)
end if
set fso = nothing
删除文件夹
dim fso
set fso = server.CreateObject(“Scripting.FileSystemObject”)
fso.DeleteFolder(“C:\test”) ‘文件夹不必为空
set fso = nothing