一. 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一样一直等,会继续向下执行