Rubrik: Dateisystem · Ordner & Verzeichnisse | VB-Versionen: VB5, VB6 | 06.08.04 |
Verzeichnis sortiert nach Dateidatum auslesen Dieser Tipp zeigt, wie sich alle Dateien eines Ordners sortiert nach Datum/Zeit in ein Array auslesen lassen. | ||
Autor: Dieter Otter | Bewertung: | Views: 31.743 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Nachfolgende Funktion ermittelt alle Dateien eines Ordners und gibt diese sortiert nach Datum/Zeit als String-Array zurück.
Public Function DirReadFiles(ByVal sPath As String) As Variant Dim sFile As String Dim vDate As Variant Dim nCount As Long Dim i As Long ReDim sFiles(0) As String ' ggf. abschließenden Backslash anfügen If Right$(sPath, 1) <> "\" Then sPath = sPath & "\" ' alle Dateien ermitteln und in ein Array speichern nCount = -1 sFile = Dir$(sPath & "*.*") Do While Len(sFile) > 0 If sFile <> "." And sFile <> ".." Then ' Array bei Bedarf redimensionieren nCount = nCount + 1 If UBound(sFiles) < nCount Then ReDim Preserve sFiles(nCount * 2) End If ' Datum/Zeit ermitteln vDate = FileDateTime(sPath & sFile) ' Array füllen sFiles(nCount) = Format$(vDate, "yyyymmdd hhnnss") & sFile End If sFile = Dir$ Loop ' Array nach Datum/Zeit sortieren If nCount >= 0 Then ' Array auf korrekte Größe bringen ReDim Preserve sFiles(nCount) ' Array sortieren QuickSort sFiles(), 0, nCount ' Datum/Zeit aus dem Array extrahieren For i = 0 To nCount sFiles(i) = Mid$(sFiles(i), 16) Next i DirReadFiles = sFiles End If End Function
Zum Sortieren des Arrays greifen wir auf den Tipp QuickSort in VB zurück.
Beispiel:
Alle Dateien des Ordners "d:\temp" ermitteln und sortiert nach Datum/Zeit in einem ListView-Control anzeigen.
Private Sub Form_Load() Dim sPath As String Dim vFiles As Variant Dim i As Long Dim oItem As ListItem ' ListView-Spalten erstellen With ListView1.ColumnHeaders .Add , , "Dateiname" .Add , , "Datum/Zeit" End With ListView1.View = lvwReport ' alle Dateien aus D:\Temp ermitteln ' und sortier nach Datum/Zeit ins ListView übertragen sPath = "d:\temp\" vFiles = DirReadFiles(sPath) If Not IsEmpty(vFiles) Then For i = 0 To UBound(vFiles) Set oItem = ListView1.ListItems.Add() oItem.Text = vFiles(i) oItem.SubItems(1) = FileDateTime(sPath & vFiles(i)) Next i End If End Sub