Alphabetisch sortierte Dateiliste erzeugen

Sie möchten alle Dateien aus einem Ordner in alphabetischer Reihenfolge bearbeiten. Wenn Sie dafür mit VBScript die Liste durchlaufen, erhalten Sie jedoch immer eine unsortierte Reihenfolge.

WSH und VBScript enthalten keine spezielle Funktion, um die Dateien eines Ordners alphabetisch sortiert zu bearbeiten. Deshalb müssen Sie selbst für die richtige Reihenfolge sorgen. Das folgende Skript (CHIP-Code Praxis02) ordnet alle Dateien eines Ordners alphabetisch und zeigt sie in einem Dialog. Dabei kommt der Sortieralgorithmus »Bubble Sort« zum Einsatz. Dieses Prinzip des Anordnens können Sie auch für andere Aufgaben in eigene Skripte übernehmen:

Option Explicit

Dim listArgs
Dim objFileSystem
Dim objFile
Dim szFolder
Dim objFolder
Dim szMessage
Dim arrayFiles(5000)
Dim intFileCounter
Dim i
Set listArgs = WScript.Arguments
If listArgs.Count = 0 Then
szFolder = InputBox("Welcher Ordner?","Ordner auswählen","C:\")
Else
szFolder = listArgs(0)
End If
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
If objFileSystem.FolderExists (szFolder) Then
Set objFolder = objFileSystem.GetFolder(szFolder)
intFileCounter = 0
szMessage = "Vor Bubble Sort:" & vbNewLine
For Each objFile In objFolder.Files
arrayFiles(intFileCounter) = objFile.Name
szMessage = szMessage & objFile.Name & vbNewLine
intFileCounter = intFileCounter + 1
Next
MsgBox szMessage
callBubbleSort arrayFiles, intFileCounter
szMessage = "Nach Bubble Sort:" & vbNewLine
For i=0 To intFileCounter
szMessage = szMessage & arrayFiles(i) & vbNewLine
Next
MsgBox szMessage
else
MsgBox "Angegebener Ordner existiert nicht!"
end if
Sub callBubbleSort(arrayDaten, intObergrenze)
Dim i, j
Dim szTemp
For i = 1 to intObergrenze
For j = intObergrenze-1 To i Step -1
if UCase(arrayDaten(j-1)) > UCase(arrayDaten(j)) Then
szTemp = arrayDaten(j-1)
arrayDaten(j-1) = arrayDaten(j)
arrayDaten(j) = szTemp
end if
Next
Next
End Sub
Mit dem Befehl »objFileSystem.GetFolder(szFolder)« erzeugt das Skript das Objekt »objFolder«, wobei »szFolder« den vollständigen Pfad zum gewünschten Ordner übergibt. Nun kann es die Liste »Files« von »objFolder« durchlaufen, die alle Dateien im Ordner enthält. Da die Einträge noch sortiert werden müssen, schreibt das Skript die Dateinamen zuerst in das Array »arrayFiles«. Achten Sie darauf, dieses Array abhängig von der Zahl der Dateien groß genug zu dimensionieren. In der Variablen »intFileCounter« legt das Skript die Zahl der im Ordner und damit im Array enthaltenen Dateien ab. Für den Algorithmus »Bubble Sort« rufen Sie die Prozedur »callBubbleSort« mit den Parametern »arrayFiles« und »intFileCounter« auf. Die Prozedur durchläuft dann das Array mehrmals von oben nach unten und sucht dabei immer den kleinsten Wert für eine Vergleichsbedingung – hier alphabetisch aufsteigend – innerhalb des durchlaufenen Arrays, um ihn am unteren Ende abzulegen. Beim nächsten Durchlauf ignoriert die Prozedur die bereits an dieser Stelle abgelegten Werte.