• 基于xsh的vbs脚本的使用(语法)


    一. 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和' 之后的内容为被注释内容

    三. 变量

    1. Sub Main
    2. xsh.Screen.Synchronous = true
    3. rem 定义1个变量
    4. dim x1
    5. ' error: dim x1 = -1
    6. ' ok: Dim x1:x1 = 5
    7. rem 定义多个变量
    8. dim x2,x3,x4,x5,x6,x7,x8,x9
    9. rem 1个变量赋值
    10. x1 = -1
    11. ' 能够正确打印值
    12. ' 语音分析:即使-1非string,参数只有变量时,不管参数哪种类型,均按string处理:"-1"
    13. xsh.Dialog.MsgBox(x1) ' -1
    14. ' error: 类型不匹配 [string :x1];
    15. ' 原因分析:xsh.Dialog.MsgBox(参数),参数为字符串类型,"x1=" 已经设定参数x1为string,若x1非string即error
    16. ' xsh.Dialog.MsgBox("x1=" + x1) ' error
    17. rem 多个变量赋值
    18. x2=0:x3=1:x4=3.14 ' :冒号前后有无空格均可以
    19. xsh.Dialog.MsgBox(x3) ' 按 "1" 处理 1
    20. xsh.Dialog.MsgBox(x4) ' 按 "3.14" 处理 3.14
    21. x5=false : x6=true : x7="true" : x8="false" : x9="9.18171666666"
    22. xsh.Dialog.MsgBox(x5) ' 0
    23. xsh.Dialog.MsgBox(x6) ' 1
    24. rem 类型转换 => int
    25. xsh.Dialog.MsgBox(cint(x4)) ' 即使按string打印,打其值3 说明已经转换 3
    26. xsh.Dialog.MsgBox(cint(x9)) ' 9
    27. rem 类型转换 => string
    28. xsh.Dialog.MsgBox(cstr(x1)) ' -1
    29. xsh.Dialog.MsgBox(cstr(x5)) ' False
    30. xsh.Dialog.MsgBox(cstr(x6)) ' True
    31. rem 类型转换 => float
    32. xsh.Dialog.MsgBox(ccur(x9)) ' 请注意,此函数会把结果四舍五入为4位的小数。 9.1817
    33. xsh.Dialog.MsgBox(csng(x9)) ' 请注意,此函数会把结果四舍五入为6位的小数 9.181717
    34. End Sub

     四. 循环

    1. Sub Main
    2. xsh.Screen.Synchronous = true
    3. rem For 语句规定计数变量以及它的开始值和结束值; Next 语句会以 1 作为步进值来递增变量i
    4. rem (每次VB执行循环里的语句后,变量计数器的值会默认地增加1
    5. ' For counter = start To end [Step step]
    6. ' [statements]
    7. ' [Exit For]
    8. ' [statements]
    9. ' Next
    10. ' 主要参数:
    11. ' counter:用做循环计数器的数值变量。这个变量不能是数组元素或用户自定义类型的元素。
    12. ' start:counter的初值。
    13. ' end:counter的终值。
    14. ' step:counter的步长。如果没有指定,则step的默认值为1。
    15. For i=1 to 10
    16. ' xsh.Dialog.MsgBox(i)
    17. Next
    18. ' 通过使用 Step 关键词,我们可以规定计数变量递增或递减的步进值。
    19. For i=2 To 10 Step 2
    20. 'xsh.Dialog.MsgBox(i)
    21. Next
    22. ' 如果要递减计数变量,就必须负的步进值。并且需要规定小于开始值的结束值。
    23. For i=10 To 2 Step -2
    24. xsh.Dialog.MsgBox(i)
    25. Next
    26. rem Do 循环: 当(或直到)条件为True时循环
    27. ' 当条件为True时重复执行某语句块
    28. ' Do [{While | Until} condition]
    29. ' [statements]
    30. ' [Exit Do]
    31. ' [statements]
    32. ' Loop
    33. ' 当条件变为True之前重复执行某语句块
    34. ' Do
    35. ' [statements]
    36. ' [Exit Do]
    37. ' [statements]
    38. ' Loop [{While | Until} condition]
    39. ' 主要参数:
    40. ' condition:数值或字符串表达式,其值为True或False。如果condition为Null,则condition被当作False
    41. ' statements:当condition为True时被重复执行的一条或多条命令
    42. ' Exit Do 语句用于退出 Do...Loop 循环。
    43. dim Count
    44. Count = 5 '定义一个变量
    45. do
    46. xsh.Dialog.MsgBox(Count)
    47. Count = Count -1
    48. Loop While Count <> 0 '当Count变量为0时,停止循环; While <>
    49. dim i:i = 5
    50. Do
    51. xsh.Dialog.MsgBox(i)
    52. i = i -1
    53. Loop Until i = 0 '直到Count变量为0时,否则一直循环; Until =
    54. 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一样一直等,会继续向下执行

  • 相关阅读:
    jquery表单验证
    springboot集成mysql、mybatis-plus、shardingsphere-jdbc实现读写分离
    x-zse-96的JSRPC解决方案
    在Windows7在部署Hadoop+Hbase
    腾讯音乐评论审核、分类与排序算法技术
    NOIP 2013 普及组初赛试题
    你清楚AI、数据库与计算机体系
    vue+element使用阿里的图标库保存图标
    计算机毕业设计Java奖助学金管理系统(源码+系统+mysql数据库+lw文档)
    HTML简单介绍
  • 原文地址:https://blog.csdn.net/hao745580264_dawei/article/details/127903517