HTA 读取文本文件并填充下拉框
HTA to read a text file and populate drop down box
文本文件示例将包含以下数据、名称和关联的 IP 地址,格式如下:
name;IP
即
harry;192.168.1.14
billy;192.168.1.22
使用VBS读取文本文件并将数据分成两部分:
Sub LoadDropDownName
Set obj = CreateObject("Scripting.FileSystemObject") 'Creating a File Object
Const ForReading = 1 'Defining Constant Value to read from a file
Set obj1 = obj.OpenTextFile("savedhosts.txt", ForReading) 'Opening a text file and reading text from it
Dim str, str1
str = obj1.ReadAll 'All text from the file is read using ReadAll
MsgBox str 'Contents of a file will be displayed through message box
'Do While obj1.AtEndofStream 'Reading text line wise using Do Loop and ReadLine
' str1 = obj1.ReadLine
' MsgBox str1
'Loop
Do Until obj1.AtEndOfStream
strNextLine = obj1.ReadLine
arrServiceList = Split(strNextLine, ";")
Set objOption = document.CreateElement("OPTION")
objOption.title = arrServiceList(0)
objOption.value = arrServiceList(1)
LoadDropDownName.Add(objOption)
MsgBox "arrServiceList(0) = " & arrServiceList(0)
MsgBox "arrServiceList(1) = " & arrServiceList(1)
Loop
'MsgBox ""
obj1.Close 'Closing a File
Set obj = Nothing 'Releasing File object
End Sub
MsgBox str
正常工作,因为它按预期显示了 "savedhosts.txt" 文件中的所有数据。
然而我无法得到
MsgBox "arrServiceList(0) = " & arrServiceList(0)
MsgBox "arrServiceList(1) = " & arrServiceList(1)
显示在框中。我已将 MsgBox
命令移动到 Loop
行下方。
Loop
MsgBox "arrServiceList(0) = " & arrServiceList(0)
MsgBox "arrServiceList(1) = " & arrServiceList(1)
'MsgBox ""
obj1.Close 'Closing a File
Set obj = Nothing 'Releasing File object
我收到一个错误:
Type mismatch 'arrServiceList'
应该从 Sub
捕获数据的 HTML 部分:
<input type='text' maxlength="15" class="enterhostip" id="INPUT-IP" name='text1'/>
输入 IP:用户可以输入一个新的 IP,当 'Saved Hostname' 选择一个新值时会自动更改。
<input type="text" maxlength="20" name="hostname" id="hostname" />
主机名:用户可以为主机输入一个新名称
<select id="savedhostname" maxlength="20" name="savedhostname" onchange="vbscript:LoadDropDownName" class="pwhost" />
保存的主机名:下拉数据仅显示 savedhosts.txt 文件中的名称。更改名称将执行
LoadDropDownName
脚本并更改 "IP-Input".
的值
如果有人能给我一个类似代码的例子(使用 VBScript)来读取这个文本文件的内容并在使用 html 时仅在 html 下拉框中显示名称单行文本输入区域自动填充关联的IP地址?
我搜索了此方法的示例,但找不到满足此简单条件的示例!
我认为问题可能是您读取了结束流的整个文件(我怀疑是出于调试目的),然后 obj.AtEndOfStream
变成了 true
。因此你的循环不会执行。
str=obj1.ReadAll ' ends the stream
您可以关闭然后重新打开流
Set obj1 = obj.OpenTextFile("savedhosts.txt", ForReading) 'Opening a text file and reading text from it
Dim str,str1
str=obj1.ReadAll 'All text from the file is read using ReadAll
Msgbox str
obj1.Close
Set obj1 = obj.OpenTextFile("savedhosts.txt", ForReading) ' etc
或者只是省略 obj1.ReadAll
位,或者将 str
作为一大块文本处理
文本文件示例将包含以下数据、名称和关联的 IP 地址,格式如下:
name;IP
即
harry;192.168.1.14 billy;192.168.1.22
使用VBS读取文本文件并将数据分成两部分:
Sub LoadDropDownName
Set obj = CreateObject("Scripting.FileSystemObject") 'Creating a File Object
Const ForReading = 1 'Defining Constant Value to read from a file
Set obj1 = obj.OpenTextFile("savedhosts.txt", ForReading) 'Opening a text file and reading text from it
Dim str, str1
str = obj1.ReadAll 'All text from the file is read using ReadAll
MsgBox str 'Contents of a file will be displayed through message box
'Do While obj1.AtEndofStream 'Reading text line wise using Do Loop and ReadLine
' str1 = obj1.ReadLine
' MsgBox str1
'Loop
Do Until obj1.AtEndOfStream
strNextLine = obj1.ReadLine
arrServiceList = Split(strNextLine, ";")
Set objOption = document.CreateElement("OPTION")
objOption.title = arrServiceList(0)
objOption.value = arrServiceList(1)
LoadDropDownName.Add(objOption)
MsgBox "arrServiceList(0) = " & arrServiceList(0)
MsgBox "arrServiceList(1) = " & arrServiceList(1)
Loop
'MsgBox ""
obj1.Close 'Closing a File
Set obj = Nothing 'Releasing File object
End Sub
MsgBox str
正常工作,因为它按预期显示了 "savedhosts.txt" 文件中的所有数据。
然而我无法得到
MsgBox "arrServiceList(0) = " & arrServiceList(0)
MsgBox "arrServiceList(1) = " & arrServiceList(1)
显示在框中。我已将 MsgBox
命令移动到 Loop
行下方。
Loop
MsgBox "arrServiceList(0) = " & arrServiceList(0)
MsgBox "arrServiceList(1) = " & arrServiceList(1)
'MsgBox ""
obj1.Close 'Closing a File
Set obj = Nothing 'Releasing File object
我收到一个错误:
Type mismatch 'arrServiceList'
应该从 Sub
捕获数据的 HTML 部分:
<input type='text' maxlength="15" class="enterhostip" id="INPUT-IP" name='text1'/>
输入 IP:用户可以输入一个新的 IP,当 'Saved Hostname' 选择一个新值时会自动更改。
<input type="text" maxlength="20" name="hostname" id="hostname" />
主机名:用户可以为主机输入一个新名称
<select id="savedhostname" maxlength="20" name="savedhostname" onchange="vbscript:LoadDropDownName" class="pwhost" />
保存的主机名:下拉数据仅显示 savedhosts.txt 文件中的名称。更改名称将执行
LoadDropDownName
脚本并更改 "IP-Input".
如果有人能给我一个类似代码的例子(使用 VBScript)来读取这个文本文件的内容并在使用 html 时仅在 html 下拉框中显示名称单行文本输入区域自动填充关联的IP地址?
我搜索了此方法的示例,但找不到满足此简单条件的示例!
我认为问题可能是您读取了结束流的整个文件(我怀疑是出于调试目的),然后 obj.AtEndOfStream
变成了 true
。因此你的循环不会执行。
str=obj1.ReadAll ' ends the stream
您可以关闭然后重新打开流
Set obj1 = obj.OpenTextFile("savedhosts.txt", ForReading) 'Opening a text file and reading text from it
Dim str,str1
str=obj1.ReadAll 'All text from the file is read using ReadAll
Msgbox str
obj1.Close
Set obj1 = obj.OpenTextFile("savedhosts.txt", ForReading) ' etc
或者只是省略 obj1.ReadAll
位,或者将 str
作为一大块文本处理