2
回答
SecureCRT关于VBS脚本的字符串丢失问题
【腾讯云】学生服务器套餐10元/月 >>>   

为了工作方便,自己学写了一段VBS脚本,用于配置设备参数。使用了字符串的读取和发送函数。
逐行读取,依次发送。我的脚本对于行数少于28行的文本,执行和处理都没有多大问题。
但是只要单个文本大于28行,就会再发送28行或29行时,出现丢行或字符混乱现象。
如,在发送第28行时,明明文本中是“OFF”,却发送的“0”或者其他,或丢失之后的其他行字符串,出现卡死在那里的现象。
请高手指教一二!不胜感谢! 
以下是脚本!
=========================================
# $language = "VBScript"
# $interface = "1.0"
crt.Screen.Synchronous = False
DIM StrPath,Line,YA,TEXT
Dim Count:NAME = 0
Sub main
Const WINDOW_HANDLE = 0
Const OPTIONS = 0
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder (WINDOW_HANDLE, "选择上传文件所在目录:"& vbcr &" ",OPTIONS,"D:\SelControl\Setting\")
Set objFolderItem = objFolder.Self
StrPath = objFolderItem.Path
If objFolder Is Nothing Then
Exit Sub
End IF
Do While NAME <> 20
NAME = NAME + 1
TEXT = StrPath & "\" & NAME & ".txt"
set FS =createobject ("scripting.filesystemobject")
IF FS.FileExists (TEXT) Then
Set TS = FS.opentextfile (TEXT,1,False)
Do while TS.atendofstream <> true
Line = TS.readline
crt.Screen.Send Line & vbcr
YA = crt.Screen.WaitForStrings ("?","","=>>")
IF YA = 1 OR 2 Then
IF TS.atendofstream = true then
Exit DO
End IF
ElseIF YA = 3 Then
Exit DO
End IF
Loop
IF NAME = 20 Then
Exit Do
End IF
ElseIF Not FS.FileExists (TEXT) Then
MSGBOX "发送完毕,请等待执行结束!"
Exit DO
End IF
Loop
End Sub

举报
顶部