vbs语法

声明变量并赋值

dim 声明变量

  1. dim name
  2. name = "tom"

定义常量

  1. const PI=3.1415926

注释

rem

  1. rem "这是vbs的注释"

  1. '这也是注释信息

常用内置函数

inputbox

显示对话框,用户可在其中输入文本,并/或点击按钮,然后返回结果。

  1. dim msg
  2. rem inputbox函数 第一个参数是 提示信息,第二个参数是 标题, 第三个参数输入框的默认值
  3. rem msg 是你输入的值
  4. msg = inputbox("输入信息","这是标题","这是默认值")

int

将输入值转化成整数值

  1. dim a,b,result
  2. a = inputbox("输入a的值") '输入1'
  3. b = inputbox("输入b的值") '输入2'
  4. result = ( a + b ) * 2 '结果为24,输入的值会当做字符串'
  5. result = a * 2 + b * 2 '结果为6'
  6. result = ( int(a) + int(b) ) '结果为6'

cdbl

把字符转换为数字,但又不取整

  1. dim a,b,result
  2. a = cdbl ( inputbox( "a是:","输入半径" ) ) '输入1.2'
  3. b = cdbl ( Inputbox( "b是:","输入半径" ) ) '输入1.3'
  4. result = ( a + b ) * 2 '结果为5'
  5. msgbox(result)

cstr

将数字转成字符串

如果拼接字符串和数字可以用 & 符号

  1. dim a , str
  2. a = 1
  3. a = cstr(a)
  4. str = "abc" & 11

WScript.sleep

进程休眠函数

  1. WScript.sleep 1000 '让当前进程休眠1000ms 同java中 Thread.sleep(1000)'

运算相关

mod 取余

  1. dim a
  2. a=16 mod 5 '1

^ 乘幂

  1. dim result
  2. result = 2 ^ 3 '8

if语句

if

  1. dim a,b
  2. a=12
  3. b=13
  4. if a<b then
  5. msgbox ("A小于B")
  6. msgbox ("B大于A")
  7. end if

if - else

  1. dim a
  2. a=inputbox("请输入一个大于100的数")
  3. a=int(a) 'inputbox返回的是字符串, 我们把他变成整数
  4. if a>100 then
  5. msgbox ("正确")
  6. else
  7. msgbox ("错误")
  8. end if

if - else if - else

  1. dim a
  2. a=inputbox("请输入一个大于100的数")
  3. a=int(a) 'inputbox返回的是字符串, 我们把他变成整数
  4. if a>100 then
  5. msgbox ("大于100")
  6. else if a=100 then
  7. msgbox ("等于100")
  8. else if a > 50 then
  9. msgbox("大于50")
  10. else
  11. msgbox ("错误")
  12. end if
  13. end if
  14. end if

and or 逻辑运算符

  1. dim a,b
  2. a=inputbox("输入一个数 >10")
  3. b=inputbox("输入另一个数 >10")
  4. a=int(a)
  5. b=int(b)
  6. if a>10 and b>10 then
  7. msgbox ("正确")
  8. else
  9. msgbox ("错误")
  10. end if
  1. dim a,b
  2. a=inputbox("输入一个数 >10")
  3. b=inputbox("输入另一个数 >10")
  4. a=int(a)
  5. b=int(b)
  6. if a>10 or b>10 then
  7. msgbox ("正确")
  8. else
  9. msgbox ("错误")
  10. end if

select case

  1. dim a
  2. a = 1
  3. select case a
  4. case 0
  5. msgbox("a的值为:" + cstr(a))
  6. case 1
  7. msgbox("a的值为:" + cstr(a))
  8. case else
  9. msgbox("a的值为其他")
  10. end select

循环

do - loop 无线循环

  1. do
  2. msgbox("111")
  3. WScript.sleep 5000
  4. loop

跳出do loop循环

  1. dim a
  2. a = 0
  3. do
  4. msgbox(a)
  5. WScript.sleep 1000
  6. if a = 5 then
  7. exit do '退出当前循环'
  8. end if
  9. a = a + 1
  10. loop

do - while - loop

  1. dim a,ctr
  2. ctr=0
  3. const pass="pas123_"
  4. do while ctr<3 '先判断while 条件 满足才执行'
  5. a=inputbox("请输入密码")
  6. if a=pass then
  7. msgbox ("认证成功")
  8. msgbox ("(你可以在这里加一段成功后得到的信息)")
  9. exit do
  10. else
  11. ctr=ctr+1 '如果密码出错就增加一次错误认证计数
  12. msgbox ("认证出错, 请检查密码")
  13. end if
  14. loop
  1. dim a,ctr
  2. ctr=0
  3. const pass="pas123_"
  4. do
  5. a=inputbox("请输入密码")
  6. if a=pass then
  7. msgbox ("认证成功")
  8. msgbox ("(你可以在这里加一段成功后得到的信息)")
  9. exit do
  10. else
  11. ctr=ctr+1 '如果密码出错就增加一次错误认证计数
  12. msgbox ("认证出错, 请检查密码")
  13. end if
  14. loop while ctr<3 '先执行do中的代码 在判断 while 条件'

for - next

exit for 退出for循环

  1. dim i
  2. for i=0 to 5
  3. msgbox (i)
  4. next

嵌套循环

  1. dim i,j,str
  2. for i=1 to 9
  3. for j=1 to 9
  4. str=str & i * j & " " '&是和并字符串的符号
  5. next '每个next对应一个for
  6. next
  7. msgbox str

for each - next

  1. dim arrs
  2. arrs = array("abc","abd","acd")
  3. for each arr in arrs
  4. msgbox(arr)
  5. next

数组

定义一维数组

dim 数组名(长度) (定义的数组元素的个数为 长度 + 1)

  1. dim name(9) '定义了10个元素的数组,下标从 0 开始'

定义二维数组

  1. dim name(9,2)

函数

定义函数

  1. function 函数名(参数1, 参数2...参数n)
  2.   ...
  3.   exit function '结束函数, 不是必需的
  4.   ...
  5.   end function

注意事项

有返回值的才是函数,没有返回值的是子程序(过程)

函数的参数列表可以是空的, 但括号不能省略, 参数之间用”,”分割,

如果函数有返回值则使用 函数名 = 要返回的结果(返回后后面的语句不在执行)

示例

  1. dim a,b
  2. a = 1
  3. b = 2
  4. msgbox(add(a,b))
  5. function add(a,b)
  6. add = a + b
  7. end function

过程

没有返回值的函数是子程序(过程)

定义过程

  1. sub 子程序名(参数1, 参数2...参数n)
  2.   ...
  3.   exit sub '结束子程序, 不是必需的
  4.   ...
  5.   end sub

注意事项

调用子程序(过程)时,需要用关键字 call

示例

  1. dim a,b
  2. a = 1
  3. b = 2
  4. call add(a,b)
  5. 'msgbox(add(a,b))
  6. sub add(a,b)
  7. msgbox (a + b)
  8. end sub

内置函数

Date/Time 函数

函数 描述
CDate 把有效的日期和时间表达式转换为日期(Date)类型。
Date 返回当前的系统日期。
DateAdd 返回已添加指定时间间隔的日期。
DateDiff 返回两个日期之间的时间间隔数。
DatePart 返回给定日期的指定部分。
DateSerial 返回指定年、月、日的日期。
DateValue 返回日期。
Day 返回代表一月中的一天的数字(介于并包括 1 到 31 之间)。
FormatDateTime 返回格式化为日期或时间的表达式。
Hour 返回代表一天中的小时的数字(介于并包括 0 到 23 之间)。
IsDate 返回指示计算表达式能否转换为日期的布尔值。
Minute 返回一个数字,代表小时的分钟(介于并包括 0 到 59 之间)。
Month 返回一个数字,代表年的月份(介于并包括 1 到 12 之间)。
MonthName 返回指定月份的名称。
Now 返回当前的系统日期和时间。
Second 返回一个数字,代表分钟的秒(介于并包括 0 到 59 之间)。
Time 返回当前的系统时间。
Timer 返回自 12:00 AM 以来的秒数。
TimeSerial 返回特定小时、分钟和秒的时间。
TimeValue 返回时间。
Weekday 返回一个数字,代表一周的天数(介于并包括 1 到 7 之间)。
WeekdayName 返回一周中指定的一天的星期名。
Year 返回一个数字,代表年份。

Conversion 函数

函数 描述
Asc 把字符串中的首字母转换为 ANSI 字符代码。
CBool 把表达式转换为布尔(Boolean)类型。
CByte 把表达式转换为字节(Byte)类型。
CCur 把表达式转换为货币(Currency)类型。
CDate 把有效的日期和时间表达式转换为日期(Date)类型。
CDbl 把表达式转换为双精度(Double)类型。
Chr 把指定的 ANSI 字符代码转换为字符。
CInt 把表达式转换为整数(Integer)类型。
CLng 把表达式转换为长整型(Long)类型。
CSng 把表达式转换为单精度(Single)类型。
CStr 把表达式转换为字符串(String)类型。
Hex 返回指定数字的十六进制值。
Oct 返回指定数字的八进制值。

Format 函数

函数 描述
FormatCurrency 返回作为货币值进行格式化的表达式。
FormatDateTime 返回作为日期或时间进行格式化的表达式。
FormatNumber 返回作为数字进行格式化的表达式。
FormatPercent 返回作为百分数进行格式化的表达式。

Math 函数

函数 描述
Abs 返回指定数字的绝对值。
Atn 返回指定数字的反正切。
Cos 返回指定数字(角度)的余弦。
Exp 返回 e(自然对数的底)的幂次方。
Hex 返回指定数字的十六进制值。
Int 返回指定数字的整数部分。
Fix 返回指定数字的整数部分。
Log 返回指定数字的自然对数。
Oct 返回指定数字的八进制值。
Rnd 返回小于1但大于或等于0的一个随机数。(与Randomize配合使用,每次生成的随机数不相同)
Sgn 返回可指示指定数字的符号的一个整数。
Sin 返回指定数字(角度)的正弦。
Sqr 返回指定数字的平方根。
Tan 返回指定数字(角度)的正切。

Array 函数

函数 描述
Array 返回一个包含数组的变量。
Filter 返回下标从零开始的数组,其中包含基于特定过滤条件的字符串数组的子集。
IsArray 返回一个指示指定的变量是否为数组的布尔值。
Join 返回一个由数组中若干子字符串组成的字符串。
LBound 返回指示数组维数的最小下标。
Split 返回下标从零开始的一维数组,包含指定数量的子字符串。
UBound 返回指示数组维数的最大下标。

String 函数

函数 描述
InStr 返回字符串在另一字符串中首次出现的位置。搜索从字符串的第一个字符开始。
InStrRev 返回字符串在另一字符串中首次出现的位置。搜索从字符串的最末字符开始。
LCase 把指定字符串转换为小写。
Left 从字符串的左侧返回指定数量的字符。
Len 返回字符串中的字符数量。
LTrim 删除字符串左侧的空格。
RTrim 删除字符串右侧的空格。
Trim 删除字符串左侧和右侧的空格。
Mid 从字符串中返回指定数量的字符。
Replace 使用另一个字符串替换字符串的指定部分指定的次数。
Right 从字符串的右侧返回指定数量的字符。
Space 返回由指定数量的空格组成的字符串。
StrComp 比较两个字符串,返回代表比较结果的一个值。
String 返回包含指定长度的重复字符的字符串。
StrReverse 反转字符串。
UCase 把指定的字符串转换为大写。

其他函数

函数 描述
CreateObject 创建指定类型的对象。
Eval 计算表达式,并返回结果。
GetLocale 返回当前的 locale ID。
GetObject 返回对文件中 automation 对象的引用。
GetRef 允许您把 VBScript 子程序连接到页面上的一个 DHTML 事件。
InputBox 显示对话框,用户可在其中输入文本,并/或点击按钮,然后返回内容。
IsEmpty 返回一个布尔值,指示指定的变量是否已被初始化。
IsNull 返回一个布尔值,指示指定的表达式是否包含无效数据(Null)。
IsNumeric 返回一个布尔值,指示指定的表达式是否可作为数字来计算。
IsObject 返回一个布尔值,指示指定的表达式是否是一个 automation 对象。
LoadPicture 返回一个图片对象。仅用于 32 位平台。
MsgBox 显示消息框,等待用户点击按钮,并返回指示用户点击了哪个按钮的值。
RGB 返回一个表示 RGB 颜色值的数字。
Round 对数字进行四舍五入。
ScriptEngine 返回使用中的脚本语言。
ScriptEngineBuildVersion 返回使用中的脚本引擎的内部版本号。
ScriptEngineMajorVersion 返回使用中的脚本引擎的主版本号。
ScriptEngineMinorVersion 返回使用中的脚本引擎的次版本号。
SetLocale 设置 locale ID,并返回之前的 locale ID。
TypeName 返回指定变量的子类型。
VarType 返回指示变量子类型的值。1
  1. rem qq自动登录
  2. dim ws
  3. set ws=createobject("wscript.shell")
  4. ws.run "qq"
  5. do while ws.AppActivate("QQ")<>True
  6. wscript.sleep 500
  7. loop
  8. ws.AppActivate "QQ"
  9. WScript.Sleep 1000
  10. ws.SendKeys "{TAB}"
  11. WScript.Sleep 1000
  12. ws.SendKeys "***********"
  13. WScript.Sleep 1000
  14. ws.SendKeys "{ENTER}"
  1. rem qq轰炸
  2. dim ws
  3. set ws=createobject("wscript.shell")
  4. do while ws.AppActivate("风在吹")<>True
  5. wscript.sleep 500
  6. loop
  7. ws.AppActivate("风在吹")
  8. for a = 1 to 1000
  9. ws.sendkeys(a)
  10. ws.sendkeys("{enter}")
  11. wscript.sleep 10
  12. next
  13. wscript.quit