读取和写入INI文件

Ctr*_*ied 2 vbscript ini hta

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

这是我目前的HTA:

http://pastebin.com/skTgqs5X

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

http://pastebin.com/pGjv4Gh1

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

Bon*_*ond 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
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)