VBScript Out of String space

Posted by MalsiaPro on Stack Overflow See other posts from Stack Overflow or by MalsiaPro
Published on 2010-02-22T14:00:06Z Indexed on 2010/03/22 19:11 UTC
Read the original article Hit count: 572

Filed under:
|
|

I got the following code to capture information for files on a specified drive, I ran the script againts a 600 GB hard drive on one of our servers and after a while I get the error

Out of String space; "Join". Line 34, Char 2

For this code, file script.vbs:

Option Explicit 
Dim objFS, objFld 
Dim objArgs 
Dim strFolder, strDestFile, blnRecursiveSearch 
''Dim strLines 
Dim strCsv 
''Dim i 

''    i = 0 

'   'Get the commandline parameters 
'   Set objArgs = WScript.Arguments  
'   strFolder = objArgs(0) 
'   strDestFile = objArgs(1) 
'   blnRecursiveSearch = objArgs(2) 

    '######################################## 
    'SPECIFY THE DRIVE YOU WANT TO SCAN BELOW 
    '######################################## 
    strFolder = "C:\"  
    strDestFile = "C:\InformationOutput.csv"  
    blnRecursiveSearch = True 

    'Create the FileSystemObject 
    Set objFS=CreateObject("Scripting.FileSystemObject") 
    'Get the directory you are working in  
    Set objFld = objFS.GetFolder(strFolder) 

    'Open the csv file 
    Set strCsv = objFS.CreateTextFile(strDestFile, True)  

''    'Write the csv file 
''    Set strCsv = objFS.CreateTextFile(strDestFile, True) 
    strCsv.WriteLine "File Path,File Size,Date Created,Date Last Modified,Date Last Accessed" 
''    strCsv.Write Join(strLines, vbCrLf) 

    'Now get the file details  
    GetFileDetails objFld, blnRecursiveSearch

''    'Close and cleanup objects 
''  strCsv.Close 

''    'Write the csv file 
''    Set strCsv = objFS.CreateTextFile(strDestFile, True) 
''    For i = 0 to UBound(strLines)  
''    strCsv.WriteLine strLines(i)  
''    Next  

    'Close and cleanup objects 
    strCsv.Close 
    Set strCsv = Nothing 
    Set objFld = Nothing 
    Set strFolder = Nothing 
    Set objArgs = Nothing 


'---------------------------SCAN SPECIFIED LOCATION------------------------------- 
Private Sub GetFileDetails(fold, blnRecursive)
Dim fld, fil
dim strLine(4)

on error resume next
    If InStr(fold.Path, "System Volume Information") < 1 Then
        If blnRecursive Then
            'Work through all the folders and subfolders
            For Each fld In fold.SubFolders
                GetFileDetails fld, True 
                If err.number <> 0 then
                    LogError err.Description & vbcrlf & "Folder - " & fold.Path
                    err.Clear 
                End If
            Next
        End If

        'Now work on the files
        For Each fil in fold.Files
            strLine(0) = fil.Path
            strLine(1) = fil.Size
            strLine(2) = fil.DateCreated
            strLine(3) = fil.DateLastModified
            strLine(4) = fil.DateLastAccessed

        strCsv.WriteLine Join(strLine, ",")


            if err.number <> 0 then
                LogError err.Description & vbcrlf & "Folder - " & fold.Path & vbcrlf & "File - " & fil.Name
                err.Clear 
            End If
        Next
    End If
end sub

Private sub LogError(strError)
dim strErr
    'Write the csv file
    Set strErr = objFS.CreateTextFile("C:\test\err.log", false)
    strErr.WriteLine strError
    strErr.Close

    Set strErr = nothing

End Sub

RunMe.cmd

wscript.exe "C:\temp\script\script.vbs"

How can I avoid getting this error? The server drives are quite a bit <????> and I would imagine that the CSV file would be at least 40 MB.

Edit by Guffa:
I commented out some lines in the code, using double ticks ('') so you can see where.

© Stack Overflow or respective owner

Related posts about vb.net

Related posts about vbscript