读取和写入INI文件

时间:2015-06-30 21:57:41

标签: vbscript ini hta

我一直在玩下面的脚本,以便能够读取我的HTA使用的设置(创建一个游戏启动器)。

这是我目前的HTA:

example git

它不起作用,它抱怨WScript对象是必需的。虽然我理解Echo在HTA中不会像那样工作但我修改代码时遇到了麻烦,所以它会起作用。即使只删除所有Echo引用,它仍然会在以下代码的第200行objOrgIni上出现问题(删除了WScript引用):

http://pastebin.com/skTgqs5X

我甚至不需要那种级别的错误检查,因为INI将存在等等,我只需要一种简单的方法来读取和写入我的脚本中的INI。你们可以帮助我实现这一目标的任何帮助都会很棒,但对我来说它有点先进,但是我喜欢解释它失败的原因。

1 个答案:

答案 0 :(得分:5)

使用VBScript的INI文件没有简单的方法。您必须自己编写功能或找到一些现有的代码。

但是你真的需要一个INI或者只是一种保存设置的方法吗?您可以将所有设置保存在Dictionary对象中,并根据需要对其进行序列化。

例如,以下是两个函数 - LoadSettingsSaveSettings - 就是这样做。

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