VBS脚本编写及修改指导--------------------------------------------------------------------------Copyright (C), Raisecom Technology Co., Ltd .--------------------------------------------------------------------------版本 : 0.0.0.1作者 : 李珊完成日期 : 07 May 2009--------------------------------------------------------------------------历史修改记录:--------------------------------------------------------------------------1. VBS语法总结1) VBScript运算符优先级别表达式由常量、变量、运算符、函数和圆括号按一定的规则组成,通过运算后有一个结果,运算结果的类型由数据和运算符共同决定。
2) VBScript控制语句总结1、选择语句1.1 单分支选择语句If 条件Then 语句End If1.2 双分支选择语句If 条件 Then语句1Else语句2End If1.3 多分支选择语句1If 条件1 Then语句1ElseIf 条件2 Then语句2ElseIf 条件3 Then语句3...Else语句nEnd If[范例]:If length=1 Thena = "000" & aElseIf length=2 Thena = "00" & aElseIf length=3 Thena = "0" & aEnd If1.4 多分支选择语句2Select Case 变量Case 常量1语句1Case 常量2语句2...End Select[范例]:Select Case bCase "10"b = "A"Case "11"b = "B"End Select2、循环语句VBScript提供了3种风格的循环语句:计数循环 For-Next循环Do循环 Do-Loop循环当循环 While-Wend循环其中For-Next循环按规定的次数执行循环,而While-Wend循环和Do循环则是在给定的条件满足时执行循环体2.1 For循环For 循环变量=初值To 终值[Step 步长] [循环体] [Exit For] Next [循环按指定的次数执行循环体] [范例]:sum=0For x=1 to 100 Step 1sum=sum+x Next2.2 Do-Loop循环1)Do[语句块][Exit Do]Loop[While|Until 循环条件]2)Do[While|Until 循环条件][语句块][Exit Do]Loop[范例]:Private Sub Form_Click() x = 2 Dox = x + 1Print "*" Loop Until x = 3 End Sub2.3 While-Wend循环While 循环条件[语句块] Wend[范例]:Private Sub Form_Click()x = 0While x < 5Print "*"x = x + 1WendEnd Sub3) VBScript常用函数总结1、转换类函数1.1 CStr (X)把表达式X转换为字符串(String)类型[格式]:P=CStr(X) 将X转换为字符串(String)类型[范例]:CStr(13)+CStr(23) 数值转换成字符串后,用“+”号连接,结果:13231.2 ASC(X),Chr(X)转换字符字符码[格式]:P=Asc(X) 把字符串中的首字母转换为 ANSI 字符代码P=Chr(X) 把指定的 ANSI 字符代码转换为字符[范例]:(1)P=Chr(65) 因为A的ASCII码等于65,结果:A(2)P=Asc( "A") 结果:651.3 CInt(X)把表达式转换为整数(Integer)类型[格式]:P=CInt(X) X必须是介于 -32768 与 32767 之间的数字[说明]:CInt 不同于 Fix 和 Int 函数删除数值的小数部分,而是采用四舍五入的方式。
当小数部分正好等于 0.5 时, CInt 总是将其四舍五入成最接近该数的偶数[范例]:P=CInt(0.5) 结果:0P=CInt(1.5) 结果:22、字符串类函数2.1 Len(X)计算字符串X的长度[格式]:P=Len(X)[说明]:空字符串长度为0,空格符也算一个字符,一个中文字虽然占用 2 Bytes,但也算一个字符[范例]:(1) X= "" (空字符串)Len(X) 结果:0(2) 令X= "abcd"Len(X) 结果:4(3) 令X= "VB教程"Len(X) 结果:42.2 Mid(X)读取字符串X中间的字符[格式]:P=Mid(X,n)由X的第n个字符读起,读取后面的所有字符P=Mid(X,n,m)由X的第n个字符读起,读取后面的m个字符[范例]:(1) X= "abcdefg"P=Mid(X,5) 结果:efg(2) X= "abcdefg"P=Mid(X,2,4) 结果:bcde2.3 Replace(X,S,R)将字符串中的某些特定字符串替换为其他字符串[格式]:P=Replace(X,S,R)[说明]:将字符串X中的字符串S替换为字符串R[范例]:X= "VB is very good"P=Replace(X,good,nice) 结果:VB is very nice2.4 LTrim(X),RTrim(X),Trim(X)LTrim(X):删除字符串X左边的空格RTrim(X):删除字符串X右边的空格Trim(X): 删除字符串X左右两边的空格[格式]:P=LTrim(S)[范例]:P=LTrim ("空格abc") 结果:"abc"(此例为了说明空格符已被删去,用引号把结果括起来)P=RTim("This is a beautiful day!空格") 结果:"This is a beautiful day!"2.5 StrReverse(X)反转字符串[格式]:P=StrReverse(X)[说明]:返回X参数反转后的字符串[范例]:X= "abc"P=StrReverse(X) 结果:cba2.6 Ucase(X),Lcase(X)转换英文字母的大小写[格式]:P=Lcase(X) 将X字符串中的大写字母转换成小写P=Ucase(X) 将X字符串中的小写字母转换成大写[说明]:除了英文字母外,其他字符或中文都不会受到影响[范例]:X= "VB and VC"Lcase(X) 结果:vb and vcUcase(X) 结果:VB AND VC2.7 Left( 字符串表达式,length)取字符串左边的几个字[格式]:P= Left (S, X)[说明]:返回字符串S的左边X个字符[范例]:P= Left("ABC123",3) 结果:ABC2.8 StrComp(string1, string2[, compare])返回指示字符串比较结果的值[格式]:P=StrComp(s1, s2[, compare]) s1、s2是任意有效的字符串表达式[说明]:compare可选,指示在计算字符串时使用的比较类型的数值。
如果省略,则执行二进制比较。
s1 小于 s2,返回-1;s1 等于 s2,返回0;s1 大于 s2,返回1 [范例]:P=StrComp (a,c) 结果:-13、数学函数3.1 Int(X),Fix(X)取X的整数值[格式]:P=Int(X) 取<=X的最大整数值P=Fix(X) 取X的整数部分,直接去掉小数[范例]:(1) Int(-54.6) 取<=-54.6的最大整数,结果:-55,(2) Fix(54.6) 取整数并直接去掉小数,结果:54,3.2 Hex(X)返回表示十六进制数字值的字符串[格式]:P= Hex (X) X 参数是任意有效的表达式[说明]:返回X的十六进制数值,最大到八位的十六进制字符[范例]:P=Hex(100) 结果:64P=Hex(100/2) 结果:323.3 Rnd [(X)]取 0-1 之间的随机数值[格式]:P=int(Rnd)[说明]:X 是任何有效的数值表达式。
若X 小于0 表示每次得到相同的随机数值。
X大于0 或未提供时表示依序得到下一个随机数值。
为了避免得到相同的随机数顺序,可以于Rnd 函数前加Randomize[范例]:RandomizeP=int(10*Rnd+1)2. 实例4) 实例1login.vbs:设备登陆# $language = "VBScript"# $interface = "1.0"Sub maincrt.Screen.Send "raisecom" &vbcrcrt.Screen.WaitForString "Password:"crt.sleep 200crt.Screen.Send "raisecom" &vbcrIf crt.Screen.WaitForString("Raisecom>",3)=True Thencrt.Screen.Send "ena" &vbcrEnd Ifcrt.Screen.WaitForString "Password:"crt.Screen.Send "raisecom" &vbcrEnd Sub◆ 脚本的简要说明:✓ crt.Screen.Send "raisecom" &vbcr :给设备发送命令raisecom(具体的命令可根据实际情况修改),并回车✓ VbCr:输入命令后回车✓ &:连接运算符,用于强制两个表达式进行字符串连接✓ crt.sleep 200:脚本延时200毫秒后再执行下面的代码,可根据实际情况决定是否需要延时(有些命令下发若干秒后才会有回显信息,此时可以加入延时),注意时间单位为毫秒✓ crt.Screen.WaitForString ("Raisecom>",3) :该行代码的意思就是在发送命令raisecom后,3秒内没有检测到Raisecom>出现,就执行下一条语句。