使用WaitForStrings()和Switch Case的secureCRT VBS
这是一个模拟机器答案的脚本,我的问题是“WaitForStrings”dosent区分“open”和“open1”或“close”和“close1”,他总是回答 “打开” 和 “关闭”使用WaitForStrings()和Switch Case的secureCRT VBS
firstopen=true
while(true)
\t strResult = crt.Screen.WaitForStrings("open1","close1","open","close","SCAN")
\t Select Case strResult
\t \t Case 1
\t \t \t crt.Sleep 500
\t \t \t crt.Screen.Send("open1_ok") & chr(13)
\t \t Case 2
\t \t \t crt.Sleep 500
\t \t \t crt.Screen.Send("close1_ok") & chr(13)
\t \t Case 3
\t \t \t If firstopen=true then
\t \t \t \t crt.Sleep 500
\t \t \t \t crt.Screen.Send("open_ok") & chr(13) \t
\t \t \t \t firstopen=false
\t \t \t else
\t \t \t \t crt.Sleep 500
\t \t \t \t crt.Screen.Send("ok") & chr(13)
\t \t \t \t firstopen=true
\t \t \t end if \t
\t \t Case 4
\t \t crt.Sleep 500
\t \t crt.Screen.Send("ready") & chr(13)
\t \t Case 5
\t \t crt.Sleep 500
\t \t crt.Screen.Send("CCD_PASS") & chr(13)
\t \t
\t \t Case Else
\t \t crt.Screen.Dialog "We didn't find what we were looking for"
\t
\t End Select
wend
可能是相关的
从A Guide to Using VBScript in SecureCRT - Page 41 (excerpt)
避免“丢失”的数据与Screen.Synchronous = True
为了避免
WaitForString()
和错过的数据 从远程发送的潜力及其相关的方法,而你的脚本中的其他代码正在执行时, 知道与Screen
对象关联的Synchronous
属性很重要。您可能会看到 看到Screen.Synchronous = True
语句出现在您在本文档前面看到的一些示例代码 中;本节试图解释在您的代码中何时使用这些语句的时间是重要的 。...
如果你的脚本代码似乎“失踪”的屏幕上显示的数据,检查你的代码 并确保
Screen
对象的Synchronous
属性与你工作是 设置为True
。 注意,但是,该设置Screen.Synchronous
到True
可似乎对SecureCRT的性能产生影响,因为 数据将不会被显示在屏幕上,直到调用WaitForString
,WaitForStrings
,ReadString
或WaitForCursor
制成。对于 例如,下面的脚本代码将导致成功连接到远程主机,但 什么都不会被显示在终端窗口因为脚本是永远循环(没有 进行任何呼叫ReadString
,WaitForString
,WaitForStrings
,或WaitForCursor
)。
那么你想让我们做什么?我们不能改变'WaitForStrings()'方法的行为,也许可以尝试'“1open”'和'“1close”',看看它是否可以识别。你只需要处理这个限制并找到解决方法。 – Lankymart
这是我不能改变预期字符串的问题... – idan357
是['Screen.Synchronous = True'](https://stackoverflow.com/a/46668176/692942)? – Lankymart