这是一个模拟机器答案的脚本,我的问题是“WaitForStrings”在“打开”和“打开1”或“关闭”和“关闭1”之间进行区分,他总是回答“打开”和“关闭” “
firstopen=true
while(true)
strResult = crt.Screen.WaitForStrings("open1","close1","open","close","SCAN")
Select Case strResult
Case 1
crt.Sleep 500
crt.Screen.Send("open1_ok") & chr(13)
Case 2
crt.Sleep 500
crt.Screen.Send("close1_ok") & chr(13)
Case 3
If firstopen=true then
crt.Sleep 500
crt.Screen.Send("open_ok") & chr(13)
firstopen=false
else
crt.Sleep 500
crt.Screen.Send("ok") & chr(13)
firstopen=true
end if
Case 4
crt.Sleep 500
crt.Screen.Send("ready") & chr(13)
Case 5
crt.Sleep 500
crt.Screen.Send("CCD_PASS") & chr(13)
Case Else
crt.Screen.Dialog "We didn't find what we were looking for"
End Select
wend
答案 0 :(得分:0)
可能相关
来自A Guide to Using VBScript in SecureCRT - Page 41 (excerpt)
的数据
避免"失踪"包含Screen.Synchronous = True
为了避免
WaitForString()
及其相关方法错过数据的可能性 当您的脚本中的其他代码正在执行时,从远程发送,这是非常重要的 了解与Synchronous
对象关联的Screen
属性。你可能有 在某些示例代码中出现了Screen.Synchronous = True
个语句 你在本文件的前面已经看过了;本节试图解释何时重要 在您的代码中使用此类语句。... 的
如果您的脚本代码似乎是"缺少"屏幕上显示的数据,检查您的代码 并确保您正在使用的
Synchronous
对象的Screen
属性 设为True
。 但请注意,将Screen.Synchronous
设置为True
似乎会产生影响 在SecureCRT的性能上,因为在调用之前数据不会显示在屏幕上 制作了WaitForString
,WaitForStrings
,ReadString
或WaitForCursor
。对于 例如,以下脚本代码将导致与远程主机的成功连接,但是 因为脚本永远循环(没有),所以不会向终端窗口显示任何内容 拨打ReadString
,WaitForString
,WaitForStrings
或WaitForCursor
的任何电话。
答案 1 :(得分:0)
尝试在第三行命令中添加以下行:
strResult = crt.Screen.WaitForStrings(["open1","close1","open","close","SCAN"])
希望有帮助!