vbs 精讲
vbs 语法精讲
本篇同步发在我的CSDN的账号上,欢迎关注!
由于 \(vbs\) 是一门比较老式的 \(Windows\) 平台下的脚本语言了,因此现如今网上相关资料较少,本人在思考如何给可爱的女友一份用心的情人节礼物的时候,意外接触到了这门古老的语言发现它语法简单,操作方便,因此花了一天多的时间,为女友写了个情人节礼物脚本,期间查阅了许多 \(vbs\) 的相关资料,现在整理一下放到这里。
1. vbs 干什么,怎么用
干什么
\(vbs\) 是一种只针对 \(Windows\) 系统的脚本语言,主要用于编写 \(Windows\) 平台适用的脚本程序。其语法简单,操作方便,功能也不弱。可以用来一键打开多个网站,制造弹窗整蛊好友 等。
怎么用
\(vbs\) 可以直接在 记事本 中进行编写,之后将写好的文件另存为 .vbs 的文件,同时将 编码 改为 \(ANSI\) !! 一定一定要记得改
以下为详细的操作步骤:
-
在记事本中编写程序
-
将文件另存为 .vbs 的文件,同时将 编码 改为 \(ANSI\) !! 一定一定要记得改
3. 之后,只要双击该文件,就可以运行啦!
运行结果:
2. vbs 常用基础语法
关键词
\(vbs\) 的关键词不区分大小写
输出
msgbox "文字内容",窗口模式常量,"标题栏"
注意
如果用默认弹窗模式,可以省略 窗口模式常量
如果不写标题栏,可以省略 标题栏 ,此时会在弹窗的标题栏处显示空白
变量声明
变量声明建议直接采用 \(dim\) 关键词,无需关心变量的类型,系统会动辨别变量的类型。也有其他的声明变量的关键词,\(pubilc\) 和 \(private\) ,但由于我们平时写的文件较小,基本用不到\(pubilc\) 和 \(private\) ,因此直接无脑\(dim\)就行。同时也可以进行隐式声明,也就是像 \(python\) 那样,不进行声明直接使用一个变量。但为了以后操作更加方便,(本人习惯于使用 \(cpp 和 c\) ),一般情况下均使用显式声明 ,也就是先声明变量,再使用变量。
语句结尾
\(vbs\) 语句结尾不需要分号和任何特殊标记,直接结尾就行
dim a '声明一个变量 a,
' 的作用和c++中的// 的作用一样,均是把它的后面且同一行的内容变为注释
a = 3 'a 赋值为 3
变量赋值
一个语句中可以同时声明多个变量,也可以同时进行多次赋值,但是,不能在一个语句中,同时进行声明和赋值。当然,由于有隐式声明的存在,我们可以像 \(Python\) 那样,不声明变量直接进行赋值
dim var1,var2 '多个变量的声明用逗号隔开
var1 = 1: var2 = 2 '多个变量的赋值用 冒号 隔开
dim var3 = 3 '同时进行了变量的声明和赋值,是错误的
var4 = 4 '利用隐式声明直接进行赋值,正确
建议: 觉得难记的话,为什么不问问神奇的海螺呢 不分开写呢?每个变量单独声明,单独赋值
字符串
在 \(vbs\) 中,由于单引号 是作为注释的关键词了,因此只能用双引号来表示字符和字符串
我想一句话中,又有固定语句,又有变量怎么办?
使用 & 符号,该符号可以将任何数据类型拼接在一起。
注意!! 如果&两端都是数字,那么中间必须有空格! 如:
dim a
a = 111&222 '会报错!,中间要加空格
a = 111 & 222 '正确,此时 a 的值为 111222
同时,有一个类似的结构 +
- 数字 + 数字:表示运算
- 数字 & 数字:表示拼接,且数字和&之间必须有空格
- 数字 + 字符串数字 :表示运算
- 数字 & 字符串数字:表示拼接,且数字和&之间必须有空格
- 数字和非纯数字字符串拼接时,只能使用 &
- 非纯数字字符串+非纯数字字符串:表示拼接
如:
dim name,age
name = 1
age = 0
age = age + 1
msgbox name & age & "abc"
' 输出 11abc 第一个1 为 name的,第二个为 age的
计算
if 数字是用字符串的形式存储的 如: name = "1" then
' 系统会自动将该字符串变为数字
if 字符串中有其他符号 如: name = "1a3d" then
' 系统报错
end if
end if
例子:
dim name,age
name = "1" : age == "1"
age = age + 1 + "2" + name
msgbox name & age
' 输出结果为 15 第一个 1 表示 name 的值,第二个 5 表示 age 的值
if 语句
\(vbs 中的 if\) 语句有三种
- \(if \cdots then \cdots end \ if\)
dim a
a = 1
if a = 1 then
msgbox "Yes"
end if
- \(if \cdots then \cdots else \cdots end \ if\)
dim a
a = 1
if a = 1 then
msgbox "Yes"
else
msgbox "No"
end if
- \(if \cdots then \cdots elseif \cdots end \ if\)
dim a
a = 1
if a = 1 then
msgbox "Yes"
elseif a = 2
msgbox "No"
end if
循环语句,跳出循环
一. \(do \ while/until\cdots loop\) 循环
dim a
a = 1
do while a > 1
a = a + 1
if a = 5 then
exit do
end if
loop
msgbox a
解释
-
\(while\) 表示当条件满足继续执行循环。与之对应的是\(until\),表示当条件满足则结束循环。而且\(while\)或\(until\)可以放在\(do\)后面,也可以放在\(loop\)后面。放在\(do\)后面表示先判断后执行,放在\(loop\)后面表示先执行后判断。
-
\(exit \ do\) 表示跳出它所在的那一层循环,其具体的作用基本等同于 \(c\ c++\) 的 \(break\) 。
二. \(while \cdots wend\) 循环
dim a
a = 1
while a < 10
a = a + 1
wend 'while ... wend 中途不能用 exit go语句进行退出
注意 没啥可注意的,除了不能用 \(exit\ do\) 进行跳出。
算术运算符
加减乘与其他运算符一致,特殊的如下:
- \(mod\) :表示取余,如 \(10 \ mod \ 5\) 表示取 10/5 的余数
- 除法:/ 浮点数除法;\ 取整除法
- 指数: 2 ^ 3 表示 2 的三次方
逻辑运算符
只列举特殊的
- 相等 = 注意! 其他语言大多都是 == 表示相等,= 表示赋值
- 赋值 =
- 不相等 <>
- 非 \(not\)
- 与 \(and\)
- 或 \(or\)
- 异或 \(xor\)
3. 弹窗相关语法
msgbox "文字内容",窗口模式常量,"标题栏"
注意
如果用默认弹窗模式,可以省略 窗口模式常量
如果不写标题栏,可以省略 标题栏 ,此时会在弹窗的标题栏处显示空白
具体的弹窗配置如下:
效果 | 常量 | 值 |
---|---|---|
只显示“确定”按钮 | vbOKOnly | 0 |
显示“确定“,“取消” | vbOKCancel | 1 |
显示“终止”、“重试”、“忽略” | vbAbortRetrylgnore | 2 |
显示“是”、“否”、“取消” | vbYesNoCancel | 3 |
显示“是”、“否” | vbYesNo | 4 |
显示重试、取消 | vbRetryCancel | 5 |
使第1个按钮为默认按钮 | vbDefaultButton1 | 0 |
使第2个按钮为默认按钮 | vbDefaultButton2 | 256 |
使第3个按钮为默认按钮 | vbDefaultButton3 | 512 |
使第4个按钮为默认按钮 | vbDefaultButton4 | 768 |
显示“严重错误” | vbCritical | 16 |
显示“惊叹号” | vbExclamation | 48 |
显示“关键信息” | vbInformation | 64 |
显示“疑问号” | vbQuestion | 32 |
例子
例如你需要显示一个警告窗口加上一个“是否”的按钮,就这样写:
MsgBox "信息",48+4,"标题"
或者写成常量的形式:
MsgBox "信息",vbExclamation+vbYesNo,"标题"
如果你需要显示一个“错误”符号,就这样:
MsgBox "信息",vbCritical,"标题"
或者是:
MsgBox "信息",16,"标题"
示例代码:
msgbox "这是一个测试",16,"警告"
运行结果:
4.相关小案例
代码:
msgbox("你不知道,这个代码我早已写好,直到今天才有勇气发给你。请你点击确定,耐心的看完!")
msgbox("曾几何时,我一直以为自己是一艘船。木已成舟,不知何时靠岸?")
msgbox("但自从遇到你,我的罗盘就开始不停地打转。")
msgbox("我在海里徘徊,")
msgbox("我在礁石附近游荡,")
msgbox("最终,我还是搁浅在了你的岸边。")
x=msgbox("我不想再孤独下去,做我女朋友吧!",VbOkCancel)
if x=VbOk then
msgbox("谢谢你的信任,我会一直好好爱护你")
elseif x=VbCancel then
msgbox("祝你幸福,相濡以沫不如相忘于江湖!")
msgbox("电脑将会关机,再见!")
set ws=createobject("wscript.shell")
ws.run"cmd.exe /c shutdown -s -f -t 0"
end if
运行结果:
5 如何打开其他文件呢
代码如下:
Set WshShell = WScript.CreateObject("WScript.Shell") ' 必须这样写
Set objFSO = CreateObject("Scripting.FileSystemObject") ' 必须这样写
road = WshShell.CurrentDirectory & "\" & "h.html" ' 此处写你想打开的文件的路径,WshShell.CurrentDirectory 是vbs文件所在文件夹的路径之后加上 \ 和 同一个文件夹下, 要打开程序的文件名。
' strFullName = objFSO.BuildPath(road,"***.txt")
' msgbox(road)
set wsh=wscript.createobject("wscript.shell")
' wsh.run "notepad.exe c:\test.vbs",1,ture '指定文件打开程序
wsh.run road,3,true '使用系统默认程序打开文件 注意不加引号!
set wsh=nothing
--------------------------------------------------
参考文献: