In VBScript, wie verwalte ich “Scripting.FileSystemObjects" wie objFSO und objFolder für mehrere Ordner/Dateien?

In VBScript, wie verwalte ich "Scripting.FileSystemObjects" wie objFSO und objFolder für mehrere Ordner/Dateien ?

In der "Main" code-Abschnitt deklarieren Sie eine Instanz (global) "Scripting.FileSystemObject"

    Set objFSO = CreateObject("Scripting.FileSystemObject")

Dann habe ich einige Operationen, wie:

    If objFSO.FileExists(strOutputFilename) Then
        WScript.Echo "Deleting File: " & strOutputFilename
        objFSO.DeleteFile strOutputFilename
    End If

Dann in einer Schleife, bekomme ich einen Ordner, und geben Sie Sie an eine Funktion:

    For gintLoop = 0 to (ubound(arraySearchPath))
        wscript.echo "Processing folder:" & arraySearchPath(gintLoop)
        Set objFolderX = objFSO.GetFolder(arraySearchPath(gintLoop))
        Call DoWork (objFolderX, arrayParam1, arrayParam2)
    Next

So weit ist alles klar...

Nun, innerhalb der Funktion, die ich tun, Dinge wie:
a) sammeln von Dateinamen aus objFolder

    Set lobjFolder = objFSO.GetFolder(objFolderX.Path)  
    Set lcolFiles = lobjFolder.Files

b) überprüfen Sie für existance von Dateien, die in anderen (nicht verwandten) Pfade

c) die Größe der verschiedenen Dateien:

    lcurInputFileSize = CCur(lobjFile.Size)

d) löschen Sie verschiedene Dateien

e) öffnen von Dateien zum Lesen

    For Each lobjFile in lcolFiles
        lstrTargetFile = lobjFolder.Path & "\" & lobjFile.Name
        Set lobjInputFile = objFSO.OpenTextFile(lstrTargetFile, ForReading)
    ...

f) öffnen von Dateien zum schreiben

    Set lobjOutputFile = objFSO.OpenTextFile(strOutputFilename, ForAppending, True)

g) andere subs/functions vorbei an den verschiedenen Objekt

h) rekursiv aufrufen die (gleiche) Funktion zum verarbeiten anderer Ordner

    For Each lobjSubfolderY in objFolderX.SubFolders
        Call DoWork (lobjSubfolderY, arrayParam1, arrayParam2)
    Next

Meine Sorge ist, dass ich brauchen, um sicherzustellen, dass die verschiedenen Verwendungen des FileSystemObjects wie Ordner, Pfade, Dateien öffnen, etc, sind nicht "Getreten", die von späteren Nutzung des FileSystemObjects.

Frage 1:
Muss ich (bzw. ist es ratsam), um eine einzelne Instanz von "Scripting.FileSystemObject" (objFSO) für "Main" und alle (oder einige) sub/function ?

Frage 2:
Ähnlich, wie verwalte ich die verschiedenen anderen Objekten zu vermeiden, Daten zu verlieren ?

Kevin

InformationsquelleAutor Kevin Fegan | 2012-06-24

Schreibe einen Kommentar