VBScript基础

VBScript基础

一. 简介

  1. VBS是一种脚本语言
  2. VBS是微软的编程语言Visual Basic的轻量级版本
  3. 格式为file.vbs
  4. 弱类型

二. 变量和常量

  • 定义:必须以字母开头,不能包含点号,不能超过255个字符

1.变量

  • 变量的生存期:

    1. 变量的生存期:指的是它可以存在的时长
    2. 本地变量:在一个子程序中声明变量时,变量只能在此程序中访问。退出此程序时,变量也会失效。可以在不同的子程序中使用名称相同的本地变量,每个变量只能在声明它的程序中被识别。
    3. 如果在子程序以外声明了一个变量,在页面上的所有子程序都能访问到它。这类变量的生存期始于他们被声明,止于页面关闭。
    1
    2
    3
    dim variable '定义变量
    variable =inputbox("请输入")
    msgbox variable rem 窗口输出variable
  • 赋值

    1
    dim num:num=0 '可用冒号:在声明后赋值

2. 常量

  • 计算圆的面积
1
2
3
4
5
dim s,r 
const pi=3.14
r=inputbox("请输入半径")
s=pi*r*r
msgbox s

三. 数学运算

1. 运算符

  • 四则运算:+ - * /

  • 取余 mod
    a = 9 mod 2 => a=1

  • 次方 ^
    a = 2 ^ 3 => a=8

  • 字符串拼接 +
    a="hello",b=" world",c=a+b => c="hello world"

  • 拼接 &
    dim i:i=1 msgbox "this is"&i

2. 类型转换

  • 转int
    a = int ( 5.5 ) => a=5

四. 数据类型

1. 布尔

1
2
3
dim a,b
a=true
b=false

五.语句

1. 条件 if

1
2
3
4
5
6
7
8
9
10
11
12
13
14
dim a
a=inputbox("请输入一个大于50的数")
a=int(a)

if a>50 then
msgbox "T"
else if
a=50 then
msgbox "equal"
else
msgbox "F"

end if
end if

2. 选择 select … case

1
2
3
4
5
6
7
8
9
10
11
12
13
dim a
a=inputbox ("请输入数字")
a=int(a)
select case a
case 1
msgbox "one"
case 2
msgbox "two"
case 3
msgbox "three"
case else
msgbox "error"
end select

3.循环

  • do - loop

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    '此处用两个if - else语句演示例子
    num=0
    dim password
    const pass = "233"
    do
    password = inputbox("password:")
    if password=pass then
    msgbox "all right"
    exit do
    else
    if num = 3 then
    msgbox "GG"
    exit do
    else
    num=num+1
    msgbox "error,plz input again"
    end if
    end if
    loop
  • for - next

    1
    2
    3
    4
    dim count
    for count=0 to 10
    msgbox count
    next
  • do - while

    1
    2
    3
    4
    5
    count=0
    do while count<11
    msgbox count
    count=count+1
    loop
  • 跳出循环 exit for | exit do (do - loop)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    dim num:num=0
    for i=0 to 9
    num=num+1
    if num=5 then
    exit for
    end if
    next

    msgbox num
  • 循环嵌套

    1
    2
    3
    4
    5
    6
    7
    8
    '9X9乘法表
    dim i,j,k
    for i=1 to 9
    for j=1 to 9
    k=i*j
    msgbox k
    next
    next

六. 数组

1. 一维数组

  • 定义
1
2
3
4
5
6
7
8
dim name(2)
name(0)="A"
name(1)="B"
name(2)="C"
for i=0 to 2
'name(i)="this is "&i
msgbox name(i)
next
  • 字符串和数字的连接
    1
    2
    3
    4
    5
    dim name(2)
    for i=0 to 2
    name(i)="this is "&i
    msgbox name(i)
    next

2. 二维数组

  • 定义
1
2
3
4
5
6
7
8
9
10
11
dim msg(1,1)
msg(0,0)="first"
msg(0,1)=1
msg(1,0)="second"
msg(1,1)=2
dim i,j
for i=0 to 1
for j=0 to 1
msgbox msg(i,j)
next
next
  • 使用例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
dim msg(1,1)
dim i,j
for i=0 to 1
for j=0 to 1
dim op
select case j
case 0
op="name"
case 1
op="age"
end select
msg(i,j)=inputbox("请输入第" & i+1 & "个人的" & op)
next
next

for i=0 to 1
for j=0 to 1
msgbox msg(i,j)
next
next
  • 遇到问题:运行VB代码脚本的时候提示:Microsoft VBScript 编译器错误 错误 ‘800a0409’ 未结束的字符串常量
    原因是:编码错误
    解决方法:另存为编码是ANSI的文本,重新运行

七. 函数

1. 库函数

  • msgbox "hello"

  • inputbox(“input”)

  • 获取系统日期

    1
    2
    3
    4
    5
    6
    'string date() & string time() = string now() 
    msgbox date()+time()
    msgbox now()
    'int month()
    dim mon=month("2020-1-25")
    msgbox mon
  • 字符串函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    dim a
    a="HELLO WORLD"

    '大写转小写 string lcase() ~~LessCase~~
    a=lcase(a)
    msgbox a

    '小写转大写 string ucase()
    a=("hello world")
    a=ucase(a)
    msgbox a

    '取长度 int len()
    a=len(a)
    msgbox a

    '替换 string replace()
    a=replace("HELLO WORLD","WORLD","VBscript")
    msgbox a
  • 数学函数

    1
    2
    3
    4
    5
    6
    '取绝对值
    dim a
    a=abs(-9)
    msgbox a
    '取整 int int(a)
    '三角 sin() cos()
  • 数组函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    dim a(2)
    a(0)="zero"
    a(1)="one"

    '判断是否是数组 boolean isarray()
    b=isarray(a)
    msgbox b

    '最小下标 int lbound(a)
    b=lbound(a)
    msgbox b 'b=0

    '最大下标 int ubound(a)
    b=ubound(a)
    msgbox b 'b=2
  • 格式转化

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    '转换 conversion
    '字符串转整数 cint() ~~change int~~
    dim a
    a=cint("890")
    msgbox a

    '进制转化 hex() oct()

    '格式化 format
    dim a
    a= formatnumber(2000)
    msgbox a
    a=formatnumber(2000,1) '一位小数
    msgbox a
    a=formatpercent(2/5)
    msgbox a
    a=formatpercent(2/5,1) '一位小数
    msgbox a

2.自定义函数

  1. 函数 function()
1
2
3
4
5
6
7
'定义
function func(name)
msgbox "hello " &name
end function

'调用
call func("world")
  1. 子程序 sub()
    1
    2
    3
    4
    5
    6
    '定义
    sub msg(name)
    msgbox "hello"&name
    end sub
    '调用
    call sub("world")
  • call 可以省略

八. 文件执行

1. wscript类

1
2
3
set ws=wscript.createobject("wscript.shell")
ws.run "notepad.exe" '返回值'
ws.exec "notepad.exe" '返回对象'
  • 路径带空格

    1
    2
    set ws=wscript.createobject("wscript.shell")
    ws.run"""F:\SteamLibrary\steamapps\common"""
  • run()的参数

    1. 路径
    2. 窗口:1-正常运行 2-激活程序最小化 3-激活程序最大化
    3. T\F: 是否等待