Datei-Suche mit WSH

Dateien mithilfe des WSH suchen

Im Rahmen des Windows Scripting Hosts benötigen wir ein paar Objekte aus dem WSH. Das Erfragen des Windows-Ordners erfolgt sinnvollerweisen direkt in der Funktion, da wir eh auf das WSH zugreifen.

Beispiel:

' Einsatz mit WSH
Sub WSH_GetINIFiles()
 
    Dim objFso      As Scripting.FileSystemObject
    Dim objFld      As Scripting.Folder
    Dim objFile     As Scripting.File
 
    Dim asFiles()   As String           'Datenfeld für die Ergebnisdateien
    Dim lCounter    As Long             'Zählervariable
 
 
    Set objFso = New Scripting.FileSystemObject
    Set objFld = objFso.GetSpecialFolder(WindowsFolder)
 
    For Each objFile In objFld.Files
    '// --------------------------------------------------------------------------------
    '// Die Funktion GetExtensionName gibt uns die Dateierweiterung zurück, nur kann
    '// diese mal ini und mal INI sein. Ein direkter Vergleich kann also fehlschlagen!
    '// Daher nutzen wir die VBA-Funktion StrComp, um ein korrektes Ergebnis zu erhalten
    '// --------------------------------------------------------------------------------
        If StrComp(objFso.GetExtensionName(objFile.Path), "ini", vbTextCompare) = 0 Then
        '// ----------------------------------------------------------------------------
        '// Bei einem Treffer inkrementieren wir die Zählervariable, re-dimensionieren
        '// das Datenfeld um einen weiteren Eintrag und beschreiben diesen mit dem
        '// aktuell gefundenen Wert (INI-Datei).
        '// ----------------------------------------------------------------------------
            lCounter = lCounter + 1
            ReDim Preserve asFiles(lCounter)
            asFiles(lCounter - 1) = objFile.Name
        End If
    Next
   'Ergebnistest - alle Array-Einträge im Direktfenster ausgeben
    For lCounter = LBound(asFiles) To UBound(asFiles)
        If Len(asFiles(lCounter)) > 0 Then
            Debug.Print "Eintrag"; lCounter; ": "; asFiles(lCounter)
        End If
    Next
 
End Sub

Diese Variante ist schon deutlich schlanker als die Dir()-Variante. Ein Nachteil ist, dass wir sämtliche Dateien im Windows-Ordner nach deren Endung untersuchen müssen. Der Dir() Befehl nimmt uns diese Arbeit ab – und ist daher in der Regel auch langsamer.