无法在vbs中重新生成数组

时间:2012-10-31 10:20:29

标签: vbscript

我正在尝试重新编辑并保留一个数组,因此它会从数组中删除任何空白行。但是我收到了错误

  

类型不匹配

在redim所在的行上的

。我是否需要首先设置数组的lbound和ubound?

option Explicit

Const ForReading = 1
Const ForAppending = 8
Const ForWriting = 2

Dim objFSO, objUsersFile, arrFileLines, a, strDN, objUser, arrMemberOf, regex, group, strData, strObject, objRootDSE, objConnection, ADLogFile
Dim objCommand, WshShell, TriStateTrue, strDNSDomain, objRecordSet, workdir, strUsers, strDateAndTime, strDayOfMonth, strMonth, strYear, strDate, strTime
Dim strOU, strFlag, Args, strfile, objFile, strAddRemoveUser, strAdminsGroup, strUserDN, ADSuccessLogFile, strUser, strGroup, objGroup
Dim strType, strPreventMDriveDelete, strAddRemove, wshNetwork, strDomainName, strPreventWin7Upgrade, strWin7Advert
Dim ADFailedLogFile, strMachine, objComputer, strMachineDN, objMachine, strPackageCode, strAppInstall, strNTName, k
Dim arrFileLine()

Set objFSO = CreateObject("Scripting.FileSystemObject")
set WshShell = WScript.CreateObject ("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set Args = WScript.Arguments

strType = "User"

strAddRemove = "Add"

strOU = "EU"

strAdminsGroup = strOU & "-SYS-MGRT-DESKTOP"

'set date for use in file names
strDayOfMonth = Right("0" & Day(Date()),2)
strMonth = Right("0" & Month(Date()),2)
strYear = Right (Year(Date()),4)
strDate = strDayOfMonth & "-" & strMonth & "-" & strYear
strTime = replace(Time(),":",".")
strDateAndTime = strDate & "-" & strTime

Workdir = "C:\script\admin"
Set ADSuccessLogFile = objFSO.OpenTextFile(workdir & "\Logs\Success" & strDateAndTime & ".txt", ForAppending,True)
Set ADFailedLogFile = objFSO.OpenTextFile(workdir & "\Logs\Failed" & strDateAndTime & ".txt", ForAppending,True)

strDNSDomain = objRootDSE.get("defaultNamingContext") 

strFile = Args.item(0)
If right (strFile,3) = "txt" Then
    Set objFile = objFSO.OpenTextFile(strFile, 1)
    k = 0
        Do Until objFile.AtEndOfStream
            strUser = Trim(objFile.ReadLine)
                If (strUser <> "") Then
                    ReDim Preserve arrFileLines(k)
                    arrFileLines(k) = strUser
                    k = k + 1
                End If
        Loop
    objFile.Close
Else
    ReDim arrFileLines(0)
    arrFileLines(0) = strFile
End If
for each struser in arrfilelines
    wscript.echo struser
next

2 个答案:

答案 0 :(得分:0)

  1. arrFileLine&lt;&gt; arrFileLines
  2. Dim aX()创建一个没有大小的固定数组; VBScript甚至不能* Bound()它
  3. 因此请使用Dim arrFileLines然后重试。

答案 1 :(得分:0)

在调暗数组时发现问题我需要arr File Lines()而不是arr FileLines