注册 登录
编程论坛 VB6论坛

求助一个在SecureCRT执行的循环嵌套语句

key9527 发布于 2022-11-02 19:31, 1038 次点击
因为设备启动时出现不定的多次启动,因此我希望前面的语句可以循环执行到满足条件,代码如下:
Sub Main
for i = 1 to 500
Do
crt.Screen.WaitForString ("Hit ESC to stop autoboot: 60 ") // 设备启动时会出现选择对话框
crt.Screen.Send chr(27) //chr27是按ESC的意思
crt.Screen.WaitForString( "Option?" )
crt.Screen.Send "1" & chr(13)
loop until crt.Screen.WaitForString ("sw0 login: ") //关键句就在这里,每次启动都要按ESC然后选择1,设备才会继续往下走到 sw0 login:那里,所以我做了一个条件循环,目的是只要没达到条件就一直循环到DO下面的语句执行
crt.Screen.Send "root" & chr(13) //达到条件后输入账户名
next
End Sub


实际运行的时候do loop不起作用,如果只启动一次,那么脚本会顺利执行结束,如果启动两次的话,还是会卡在“Hit ESC to stop autoboot: 60 ”这一句,也没有大神看出问题在哪?
5 回复
#2
yuma2022-11-03 19:09
Sub Main()
I = 0
Do
I = I + 1
crt.Screen.WaitForString ("Hit ESC to stop autoboot: 60 ") // 设备启动时会出现选择对话框
crt.Screen.Send chr(27) //chr27是按ESC的意思
crt.Screen.WaitForString ("Option?")
crt.Screen.Send "1" & Chr(13)
Loop Until I = 500
crt.Screen.WaitForString ("sw0 login: ")
crt.Screen.Send "root" & chr(13) //达到条件后输入账户名
Next
End Sub
#3
key95272022-11-04 09:41
以下是引用yuma在2022-11-3 19:09:05的发言:

Sub Main()
I = 0
Do
I = I + 1
crt.Screen.WaitForString ("Hit ESC to stop autoboot: 60 ") // 设备启动时会出现选择对话框
crt.Screen.Send chr(27) //chr27是按ESC的意思
crt.Screen.WaitForString ("Option?")
crt.Screen.Send "1" & Chr(13)
Loop Until I = 500
crt.Screen.WaitForString ("sw0 login: ")
crt.Screen.Send "root" & chr(13) //达到条件后输入账户名
Next
End Sub

多谢。可能是我没说清楚,我的意思是,我上一次电,设备可能会随机启动两次或一次,只要启动的时候才会出现对话框,而如果不选择的话,设备就会一直停下来等你输入,所以中间我做的DO循环是个条件循环,就是要应对可能是一次或两次的情况。
#4
yuma2022-11-04 18:41
如果要设备只启动一次,可以用布尔值来判断。

这样,设备只能启动一次。

[此贴子已经被作者于2022-11-4 18:43编辑过]

#5
cwa99582022-11-05 10:38
循环语句执行是很快的,又是连续执行的。
在循环里加一条
DoEvents
试试看
#6
key95272022-11-07 08:50
多谢各位,目前我在用其他办法,各位的办法我也会试试看。
1