使用WaitForStrings()和Switch Case的secureCRT VBS

时间:2017-10-10 12:23:15

标签: vbscript secure-crt

这是一个模拟机器答案的脚本,我的问题是“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

2 个答案:

答案 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的性能上,因为在调用之前数据不会显示在屏幕上   制作了WaitForStringWaitForStringsReadStringWaitForCursor。对于   例如,以下脚本代码将导致与远程主机的成功连接,但是   因为脚本永远循环(没有),所以不会向终端窗口显示任何内容   拨打ReadStringWaitForStringWaitForStringsWaitForCursor的任何电话。

答案 1 :(得分:0)

尝试在第三行命令中添加以下行:

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

希望有帮助!