我一直在玩下面的脚本,以便能够读取我的HTA使用的设置(创建一个游戏启动器).
这是我目前的HTA:
它不太有效,它抱怨WScript所需的对象.虽然我理解Echo在HTA中不会像那样工作但我修改代码时遇到了麻烦,所以它会起作用.即使只删除所有Echo引用,它仍然存在objOrgIni以下代码的第200行的问题(WScript删除了引用):
我甚至不需要那种级别的错误检查,因为INI将存在等等,我只需要一种简单的方法来读取和写入我的脚本中的INI.你们可以帮助我实现这一目标的任何帮助都会很棒,但对我来说这对我来说有点先进,但是我想要解释为什么会失败.
使用VBScript的INI文件没有简单的方法.您必须自己编写功能或找到执行此功能的现有代码.
但是你真的需要INI专门或者只是一种保存设置的方法吗?您可以将所有设置保存在Dictionary对象中,并根据需要进行序列化.
例如,这里有两个函数 - LoadSettings而且SaveSettings- 就是这样做的.
Public Function LoadSettings(strFile)
Set LoadSettings = CreateObject("Scripting.Dictionary")
Dim strLine, a
With CreateObject("Scripting.FileSystemObject")
If Not .FileExists(strFile) Then Exit Function
With .OpenTextFile(strFile)
Do Until .AtEndOfStream
strLine = Trim(.ReadLine())
If InStr(strLine, "=") > 0 Then
a = Split(strLine, "=")
LoadSettings.Add a(0), a(1)
End If
Loop
End With
End With
End Function
Sub SaveSettings(d, strFile)
With CreateObject("Scripting.FileSystemObject").CreateTextFile(strFile, True)
Dim k
For Each k In d
.WriteLine k & "=" & d(k)
Next
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
想象一下,您保存了以下设置文件c:\settings.txt:
Count=2
Name=Obama
Run Code Online (Sandbox Code Playgroud)
你会像上面这样使用上面的函数:
Const SETTINGS_FILE = "c:\settings.txt"
Dim Settings
Set Settings = LoadSettings(SETTINGS_FILE)
' Show all settings...
WScript.Echo Join(Settings.Keys, ", ") ' => Count, Name
' Query a setting...
WScript.Echo Settings("Count") ' => 2
' Update a setting...
Settings("Count") = Settings("Count") + 1
' Add a setting...
Settings("New") = 1
' Save settings...
SaveSettings Settings, SETTINGS_FILE
Run Code Online (Sandbox Code Playgroud)