-2

这是一个模拟机器答案的脚本,我的问题是“WaitForStrings”区分“open”和“open1”或“close”和“close1”,他总是回答“open”和“close”

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

4

2 回答 2

0

尝试将以下行放入您的第三行命令:

strResult = crt.Screen.WaitForStrings(["open1","close1","open","close","SCAN"])

希望能帮助到你!!

于 2020-07-01T21:09:41.033 回答
0

可能相关

在 SecureCRT 中使用 VBScript 的指南 - 第 41 页(摘录)
避免“丢失”数据Screen.Synchronous = True

为了避免在WaitForString()执行脚本中的其他代码时丢失从远程发送的数据的可能性及其相关方法,了解Synchronous与对象关联的属性很重要Screen。您可能已经Screen.Synchronous = True在本文档前面看到的一些示例代码中看到了语句;本节试图解释何时在代码中使用此类语句很重要。

...

如果您的脚本代码似乎“缺少”屏幕上显示的数据,请检查您的代码并确保您正在使用Synchronous的对象的属性设置为. 但是请注意,设置为似乎会对 SecureCRT 的性能产生影响,因为在调用、、或之前,数据不会显示在屏幕上 。例如,以下脚本代码将成功连接到远程主机,但由于脚本永远循环(不调用、、或),因此终端窗口不会显示任何内容。ScreenTrueScreen.SynchronousTrueWaitForStringWaitForStringsReadStringWaitForCursorReadStringWaitForStringWaitForStringsWaitForCursor

于 2017-10-10T13:35:30.820 回答