1

vbscript の Eval (または Execute が必要かもしれません) を使用して、ini ファイルのキー名からいくつかの変数を作成しようとしています。ini ファイルには、未知の key=val ペアを無制限に含めることができます。何があっても、キー名に基づいて変数を作成する必要があります。

Ini ファイルの内容:

myPath=c:\test
myExe=myapp.exe
....
xxx=123
yyy=abc

ini を読み取り、キーと値をオブジェクトに返す私のコード

私が動作させようとしているコードは次のとおりです。

For each pair in objINI
    Eval("pair.key=pair.val")
Next

msgbox myPath
msgbox myExe

しかし、両方の msgbox が空を示しています。もちろん、pair.key と pair.val の値が正しいことは確かです。

私が欠けているものについての考え、またはこれが可能かどうか?

4

3 に答える 3

1

リテラル code を評価しましたpair.key = pair.value
それはに割り当てpair.keyます。

の値に割り当てたいpair.keypair.keyがの場合myPath、 eval したいmyPath = pair.value
文字列を連結することでそれを行うことができます:

Execute(pair.name + " = pair.value")
于 2013-06-05T18:34:52.000 に答える
0

INI ファイルからキーと値のペアを読み取りたい場合は、それらを辞書に保存することをお勧めします。私は数年前にこの関数を書きました。基本的には次のようになります。

Function ParseIni(filename)
  Set ParseIni = Nothing

  Set config = CreateObject("Scripting.Dictionary")
  section = ""

  Set file = CreateObject("Scripting.FileSystemObject").OpenTextFile(filename)
  Do While Not file.AtEndOfStream
    line = Trim(Replace(file.ReadLine, vbTab, " "))
    If InStr(line, ";") > 0 Then line = Trim(Left(line, InStr(line, ";") - 1))
    If line <> "" Then
      If Left(line, 1) = "[" And Right(line, 1) = "]" Then
        ' line is a section name
        section = Trim(Mid(line, 2, Len(line) - 2))
        If section = "" Then _
          WScript.Echo "Parse Error: section name is empty string."
        If config.Exists(section) Then _
          WScript.Echo "Parse Error: duplicate section name '" & name & "'."
        config.Add section, CreateObject("Scripting.Dictionary")
      ElseIf InStr(line, "=") > 0 Then
        ' line is a parameter line
        If section = "" And Not config.Exists(section) Then _
          config.Add section, CreateObject("Scripting.Dictionary")
        param = Split(line, "=", 2)
        param(0) = Trim(param(0))
        param(1) = Trim(param(1))
        If param(0) = "" Then _
          WScript.Echo "Parse Error: invalid parameter name '" & param(0) & "'."
        If param(1) = "" Then param(1) = True
        config(section).Add param(0), param(1)
      Else
        ' line is neither parameter nor section name, thus invalid
        WScript.Echo "Parse Error: expected parameter definition in line '" _
          & line & "'."
      End If
    End If
  Loop
  file.Close

  Set ParseIni = config
End Function
于 2013-06-05T21:08:05.933 に答える