一. chr(number)含义
chr(number) 对应列表链接:chr码值对应列表大全_conger3400的博客-CSDN博客
常用举例:
chr(3):Ctrl+C/退出等待某个执行命令
chr(4):Ctrl+D/退出会话
chr(8):del回退删除一个字符
chr(9):tab键
二. 注释
REM(rem) message1
' message2
REM和' 之后的内容为被注释内容
三. 变量
Sub Main
xsh.Screen.Synchronous = true
rem 定义1个变量
dim x1
' error: dim x1 = -1
' ok: Dim x1:x1 = 5
rem 定义多个变量
dim x2,x3,x4,x5,x6,x7,x8,x9
rem 1个变量赋值
x1 = -1
' 能够正确打印值
' 语音分析:即使-1非string,参数只有变量时,不管参数哪种类型,均按string处理:"-1"
xsh.Dialog.MsgBox(x1) ' -1
' error: 类型不匹配 [string :x1];
' 原因分析:xsh.Dialog.MsgBox(参数),参数为字符串类型,"x1=" 已经设定参数x1为string,若x1非string即error
' xsh.Dialog.MsgBox("x1=" + x1) ' error
rem 多个变量赋值
x2=0:x3=1:x4=3.14 ' :冒号前后有无空格均可以
xsh.Dialog.MsgBox(x3) ' 按 "1" 处理 1
xsh.Dialog.MsgBox(x4) ' 按 "3.14" 处理 3.14
x5=false : x6=true : x7="true" : x8="false" : x9="9.18171666666"
xsh.Dialog.MsgBox(x5) ' 0
xsh.Dialog.MsgBox(x6) ' 1
rem 类型转换 => int
xsh.Dialog.MsgBox(cint(x4)) ' 即使按string打印,打其值3 说明已经转换 3
xsh.Dialog.MsgBox(cint(x9)) ' 9
rem 类型转换 => string
xsh.Dialog.MsgBox(cstr(x1)) ' -1
xsh.Dialog.MsgBox(cstr(x5)) ' False
xsh.Dialog.MsgBox(cstr(x6)) ' True
rem 类型转换 => float
xsh.Dialog.MsgBox(ccur(x9)) ' 请注意,此函数会把结果四舍五入为4位的小数。 9.1817
xsh.Dialog.MsgBox(csng(x9)) ' 请注意,此函数会把结果四舍五入为6位的小数 9.181717
End Sub
四. 循环
Sub Main
xsh.Screen.Synchronous = true
rem For 语句规定计数变量以及它的开始值和结束值; Next 语句会以 1 作为步进值来递增变量i
rem (每次VB执行循环里的语句后,变量计数器的值会默认地增加1)
' For counter = start To end [Step step]
' [statements]
' [Exit For]
' [statements]
' Next
' 主要参数:
' counter:用做循环计数器的数值变量。这个变量不能是数组元素或用户自定义类型的元素。
' start:counter的初值。
' end:counter的终值。
' step:counter的步长。如果没有指定,则step的默认值为1。
For i=1 to 10
' xsh.Dialog.MsgBox(i)
Next
' 通过使用 Step 关键词,我们可以规定计数变量递增或递减的步进值。
For i=2 To 10 Step 2
'xsh.Dialog.MsgBox(i)
Next
' 如果要递减计数变量,就必须负的步进值。并且需要规定小于开始值的结束值。
For i=10 To 2 Step -2
xsh.Dialog.MsgBox(i)
Next
rem Do 循环: 当(或直到)条件为True时循环
' 当条件为True时重复执行某语句块
' Do [{While | Until} condition]
' [statements]
' [Exit Do]
' [statements]
' Loop
' 当条件变为True之前重复执行某语句块
' Do
' [statements]
' [Exit Do]
' [statements]
' Loop [{While | Until} condition]
' 主要参数:
' condition:数值或字符串表达式,其值为True或False。如果condition为Null,则condition被当作False
' statements:当condition为True时被重复执行的一条或多条命令
' Exit Do 语句用于退出 Do...Loop 循环。
dim Count
Count = 5 '定义一个变量
do
xsh.Dialog.MsgBox(Count)
Count = Count -1
Loop While Count <> 0 '当Count变量为0时,停止循环; While <>
dim i:i = 5
Do
xsh.Dialog.MsgBox(i)
i = i -1
Loop Until i = 0 '直到Count变量为0时,否则一直循环; Until =
End Sub
五. Sleep函数
xsh.Session.Sleep(num)
num:毫秒
六. 注意事项
1)断开连接后,需要sleep才能执行后续命令
xsh.Screen.Send("ssh 192.169.11.1" + "\n") //命令1
xsh.Screen.WaitForString("# ")
xsh.Screen.Send(chr(4))
xsh.Session.Sleep(500) //sleep
xsh.Screen.Send("iperf3.exe -c 192.168.10.160" + "\n") //后续命令
2)脚本中一些匹配字段,若与实际不匹配,会一直wait,不会向下执行,脚本也不会主动退出
例如:telnet登录,cnPilot-R195P 字段若不匹配,会一直wait,不会执行(2)
(1)xsh.Screen.WaitForString("cnPilot-R195P login: ")
(2)xsh.Screen.Send("admin")
3)WaitForStrings函数返回值和timeout参数均无效
result = xsh.Screen.WaitForStrings("cnPilot-R195P login: ", 1000)
result不是返回字符串长度(不管正误,实际打印为1)
timeout并不会延时等待,只不过不会像WaitForString一样一直等,会继续向下执行