我一直在玩下面的脚本,以便能够读取我的HTA使用的设置(创建一个游戏启动器)。
这是我目前的HTA:
它不起作用,它抱怨WScript
对象是必需的。虽然我理解Echo
在HTA中不会像那样工作但我修改代码时遇到了麻烦,所以它会起作用。即使只删除所有Echo
引用,它仍然会在以下代码的第200行objOrgIni
上出现问题(删除了WScript
引用):
我甚至不需要那种级别的错误检查,因为INI将存在等等,我只需要一种简单的方法来读取和写入我的脚本中的INI。你们可以帮助我实现这一目标的任何帮助都会很棒,但对我来说它有点先进,但是我喜欢解释它失败的原因。
答案 0 :(得分:5)
使用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
想象一下,您在c:\settings.txt
保存了以下设置文件:
Count=2
Name=Obama
您可以使用上述功能:
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