Windows 如何使用vbscript将GUID写入.ini文件?

Windows 如何使用vbscript将GUID写入.ini文件?,windows,vbscript,guid,ini,Windows,Vbscript,Guid,Ini,如何使用vbscript将GUID写入.ini文件 guid = CreateGUID() WriteIni "testsection", "ID", guid, "H:\test123.ini" Function CreateGUID() CreateGUID = "" Set objTypeLib = CreateObject("Scriptlet.TypeLib") Wscript.Echo "GUID: " & objTypeLib.Gui

如何使用vbscript将GUID写入.ini文件

guid = CreateGUID()
WriteIni "testsection", "ID", guid, "H:\test123.ini"        
Function CreateGUID()
    CreateGUID = ""
    Set objTypeLib = CreateObject("Scriptlet.TypeLib")
    Wscript.Echo "GUID: " & objTypeLib.Guid
    CreateGUID = objTypeLib.Guid
End Function
上面的代码工作不正常。它在.ini文件的GUID中附加了一些其他字符。例如:

将GUID写入
test123.ini
后:

[testsection]
ID=EAE11CC4-F60E-4B21-8AA8-E0CE2ADE5521 5
这里添加了额外的字符(例如:5)。它必须按如下方式更新文件:

[testsection]
ID=EAE11CC4-F60E-4B21-8AA8-E0CE2ADE5521
[Section1]
value1="foo"
value2="bar"

[Section2]
valueX="baz"
+-Section1
| +-value1 -> "foo"
| `-value2 -> "bar"
`-Section2
  `-valueX -> "baz"
section = "Section1"

If Not ini.Exists(section) Then
  ini.Add section, CreateObject("Scripting.Dictionary")
End If

ini(section)("ID") = CreateObject("Scriptlet.TypeLib").GUID
Set fso = CreateObject("Scripting.FileSystemObject")

Set f = fso.OpenTextFile("C:\path\to\your.ini", 2)
For Each section In ini.Keys
  f.WriteLine "[" & section & "]"
  For Each value In ini(section).Keys
    f.WriteLine value & "=" & Chr(34) & ini(section)(value) & Chr(34)
  Next
  f.WriteLine
Next
f.Close

这是
Scriptlet.TypeLib
对象中的一个已知错误。
Guid
属性的长度应为38个字符,但返回时的长度为40,末尾有2个垃圾字符。您需要修剪
Guid
值以避免出现以下问题:

函数CreateGUID()
CreateGUID=“”
Set objTypeLib=CreateObject(“Scriptlet.TypeLib”)
CreateGUID=Left(TypeLib.Guid,38)'带花括号:{47BC69BD-06A5-4617-B730-B644DBCD40A9}
不带大括号的“CreateGUID=Mid(TypeLib.Guid,2,36)”:47BC69BD-06A5-4617-B730-B644DBCD40A9
端函数

你让事情变得比需要的更复杂了。我建议将INI文件读入字典字典中,这样的文件:

[testsection]
ID=EAE11CC4-F60E-4B21-8AA8-E0CE2ADE5521
[Section1]
value1="foo"
value2="bar"

[Section2]
valueX="baz"
+-Section1
| +-value1 -> "foo"
| `-value2 -> "bar"
`-Section2
  `-valueX -> "baz"
section = "Section1"

If Not ini.Exists(section) Then
  ini.Add section, CreateObject("Scripting.Dictionary")
End If

ini(section)("ID") = CreateObject("Scriptlet.TypeLib").GUID
Set fso = CreateObject("Scripting.FileSystemObject")

Set f = fso.OpenTextFile("C:\path\to\your.ini", 2)
For Each section In ini.Keys
  f.WriteLine "[" & section & "]"
  For Each value In ini(section).Keys
    f.WriteLine value & "=" & Chr(34) & ini(section)(value) & Chr(34)
  Next
  f.WriteLine
Next
f.Close
变成如下所示的数据结构:

[testsection]
ID=EAE11CC4-F60E-4B21-8AA8-E0CE2ADE5521
[Section1]
value1="foo"
value2="bar"

[Section2]
valueX="baz"
+-Section1
| +-value1 -> "foo"
| `-value2 -> "bar"
`-Section2
  `-valueX -> "baz"
section = "Section1"

If Not ini.Exists(section) Then
  ini.Add section, CreateObject("Scripting.Dictionary")
End If

ini(section)("ID") = CreateObject("Scriptlet.TypeLib").GUID
Set fso = CreateObject("Scripting.FileSystemObject")

Set f = fso.OpenTextFile("C:\path\to\your.ini", 2)
For Each section In ini.Keys
  f.WriteLine "[" & section & "]"
  For Each value In ini(section).Keys
    f.WriteLine value & "=" & Chr(34) & ini(section)(value) & Chr(34)
  Next
  f.WriteLine
Next
f.Close
然后,您可以简单地向给定节添加GUID,如下所示:

[testsection]
ID=EAE11CC4-F60E-4B21-8AA8-E0CE2ADE5521
[Section1]
value1="foo"
value2="bar"

[Section2]
valueX="baz"
+-Section1
| +-value1 -> "foo"
| `-value2 -> "bar"
`-Section2
  `-valueX -> "baz"
section = "Section1"

If Not ini.Exists(section) Then
  ini.Add section, CreateObject("Scripting.Dictionary")
End If

ini(section)("ID") = CreateObject("Scriptlet.TypeLib").GUID
Set fso = CreateObject("Scripting.FileSystemObject")

Set f = fso.OpenTextFile("C:\path\to\your.ini", 2)
For Each section In ini.Keys
  f.WriteLine "[" & section & "]"
  For Each value In ini(section).Keys
    f.WriteLine value & "=" & Chr(34) & ini(section)(value) & Chr(34)
  Next
  f.WriteLine
Next
f.Close
然后将数据写回如下文件:

[testsection]
ID=EAE11CC4-F60E-4B21-8AA8-E0CE2ADE5521
[Section1]
value1="foo"
value2="bar"

[Section2]
valueX="baz"
+-Section1
| +-value1 -> "foo"
| `-value2 -> "bar"
`-Section2
  `-valueX -> "baz"
section = "Section1"

If Not ini.Exists(section) Then
  ini.Add section, CreateObject("Scripting.Dictionary")
End If

ini(section)("ID") = CreateObject("Scriptlet.TypeLib").GUID
Set fso = CreateObject("Scripting.FileSystemObject")

Set f = fso.OpenTextFile("C:\path\to\your.ini", 2)
For Each section In ini.Keys
  f.WriteLine "[" & section & "]"
  For Each value In ini(section).Keys
    f.WriteLine value & "=" & Chr(34) & ini(section)(value) & Chr(34)
  Next
  f.WriteLine
Next
f.Close

不久前,我编写了一个过程(),用于将INI文件解析为此类数据结构。

谢谢您的回答。删除GUID中的垃圾值后,它工作正常。感谢您的回复。我将导入这些更改。