3

我正在编写一个查看当前 IE 主页的脚本。如果它不是我们的 Intranet,我会获取该值并将其合并到辅助页面 reg 键中。

现在我已经弄清楚如何将它合并到一个数组中(假设有一些辅助页面......如果没有什么大不了的)。我遇到的是当我最终合并它时似乎有一条额外的线。它快把我逼疯了。有什么想法吗?这是功能。他的脚本还有更多,但这是令人痛苦的部分。谢谢

Function AppendSecondary(StrComputer)

objReg.GetstringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValueMain
objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValueMyMTD

set ws = WScript.CreateObject("Wscript.Shell")
strKeyPath=WS.RegRead(strKeyPathPath & ValueNameSecondary)
if vartype(strKeyPath)= vbArray + vbVariant then
  arStrings = strKeyPath
else
  arStrings = split(strKeyPath,chr(0))

  redim preserve arStrings(ubound(arStrings)-3)
end If

redim preserve arStrings(ubound(arStrings)+1)

arstrings(ubound(arStrings))= strvaluemain

arstrings1 = join(arStrings,VBCRLF)

arstringsnew = Array(arstrings1)


objReg.SetMultiStringValue HKEY_CURRENT_USER, strKeyPath, ValueNameSecondary, arstringsnew



End Function
4

2 回答 2

0

检查每个数组的最后一个元素,确保它不是空字符串 ("") 或非打印字符,如 Chr(10) 或 Chr(13) 或 vbCR、vbLF 或 vbCRLF。

于 2012-11-22T02:22:38.207 回答
0

有趣的问题。

只是出于好奇,为什么要合并一个数组,然后再将其重建为一个数组?

arstrings1 = join(arStrings,VBCRLF) 'merge
arstringsnew = Array(arstrings1) 'reassemble

无论如何,我认为您对“chr(0)”的拆分造成了这个问题,并且一个简单的修订版加入命令就足够了。

arstrings1 = trim(join(arstrings,vbcrlf))

如果不是这种情况,快速循环'd'loop

dim nArray() : Redim nArray(0)
for each str in arstrings
    if len(str)>0 then
        nArray(ubound(nArray)) = str
        redim preserve nArray(ubound(nArray)+1)
    end if
next

arrstringsnew = nArray
于 2014-02-24T19:14:21.570 回答