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

时间:2014-01-13 07:03:39

标签: 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.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

2 个答案:

答案 0 :(得分:1)

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

Function CreateGUID()
  CreateGUID = ""
  Set objTypeLib = CreateObject("Scriptlet.TypeLib")
  CreateGUID = Left(TypeLib.Guid, 38)     ' With curly braces: {47BC69BD-06A5-4617-B730-B644DBCD40A9}
  ' CreateGUID = Mid(TypeLib.Guid, 2, 36) ' Without curly braces: 47BC69BD-06A5-4617-B730-B644DBCD40A9
End Function

答案 1 :(得分:0)

你让它变得比它需要的更复杂。我建议将INI文件读入字典词典,以便这样的文件:

[Section1]
value1="foo"
value2="bar"

[Section2]
valueX="baz"

成为这样的数据结构:

+-Section1
| +-value1 -> "foo"
| `-value2 -> "bar"
`-Section2
  `-valueX -> "baz"

然后您可以简单地将GUID添加到给定的部分,如下所示:

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

前段时间我写了一个程序(ParseIni),用于将INI文件解析为这样的数据结构。