注册 登录
编程论坛 VB6论坛

求大神解答如何用VB实现根据设备号自动匹配MAC地址

george860811 发布于 2016-01-05 00:49, 1997 次点击
求各位大神帮我解答。
问题:我想用VB编个SecureCRT 5.1脚本,目的是在弹窗中输入设备号就能自动输入相对应的MAC地址。但是我自己编的脚本只在输入设备号为1时,自动输入相对应MAC:031001。但输入2或者3都直接报错 "错误的设备号,请核对" 。求大神解答
脚本如下:
程序代码:
# $language = "VBScript"
# $interface = "1.0"

 
Sub Main

 On Error Resume Next

 Const ForReading = 1, ForWriting = 2, ForAppending = 8

 Dim fso,MAC1,line,params

 Dim DeviceNo

 Set fso = CreateObject("Scripting.FileSystemObject")

 Set MAC1 = fso.OpenTextFile("c:\2.ini",Forreading, False)

 crt.Screen.Synchronous = True
     

 line = MAC1.ReadLine

 params = Split (line)

 

 crt.Screen.WaitForString "或批处理文件。"

 DeviceNo = inputbox("请输入设备号","设备号输入对话框")

 

 If DeviceNo = params(0) Then

 

 crt.Screen.Send params(1) & vbcr

 Else
   MsgBox "错误的设备号,请核对"

 
               End If
    crt.Screen.Synchronous = False   
End Sub


2.ini文件中格式如下:
1 031001
2 031002
3 031003
5 回复
#2
Artless2016-01-05 19:00
If DeviceNo = params(0) Then
 
  crt.Screen.Send params(1) & vbcr
  Else
    MsgBox "错误的设备号,请核对"
  
                End If

params(0)是1输入别的都是"错误的设备号,请核对"
#3
george8608112016-01-05 20:02
回复 2楼 Artless
没懂大神,请问如何解决
#4
风吹过b2016-01-05 21:23
太久没用 FSO 了,都不记得了。

你程序里,只读了一行,然后针对这行进行判断,判断不对,就立即提示不对,而没有去读后面的行。

程序流程应该是:

打开文件
循环开始,条件是文件未结束
读一行
分解数据
比较,
  如果正确,设置值 跳出循环
  如果错误,不处理
循环结束
判断,如果设置了值,返回值 ,否则就提示错误,返回空。



#5
风吹过b2016-01-05 21:38
Sub Main
 On Error Resume Next
 Const ForReading = 1, ForWriting = 2, ForAppending = 8
 Dim fso,MAC1,line,params
 Dim DeviceNo
 Set fso = CreateObject("Scripting.FileSystemObject")
 Set MAC1 = fso.OpenTextFile("c:\2.ini",Forreading, False)

 DeviceNo = inputbox("请输入设备号","设备号输入对话框")
 
p=""
do while not mac1.atendofstream
   
 line = MAC1.ReadLine
 params = Split (line," ")
 If DeviceNo = params(0) Then
    p=params(1)
    exit do
 End If
loop

mac1.close

if p<>"" then
    msgbox p
' crt.Screen.Synchronous = True
' crt.Screen.WaitForString "或批处理文件。"
'     crt.Screen.Send p & vbcr
else
    msgbox "错误的设备号,请核对"
'    crt.Screen.Synchronous = False   
end if

End Sub

不正确的命令删,我用测试时用不了,就注释了。
#6
george8608112016-01-05 22:28
谢谢大神
1