vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Dateisystem · Ordner & Verzeichnisse   |   VB-Versionen: VB5, VB630.12.01
Alle Ordner eines Laufwerks ermitteln

Mit dem FileSystemObject lassen sich die Ordner, sowie alle Unterordner eines Laufwerks oder Verzeichnisses recht einfach ermitteln.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  48.969 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Um alle Ordner und Unterordner eines bestimmten Laufwerks oder Verzeichnisses zu ermitteln, kann man verschiedene Wege gehen. Man könnte dir Dir()-Funktion verwenden oder auch auf die API-Funktionen FindFirstFile und FindNextFile zurückgreifen. Eine weitere Möglichkeit wäre die DirListBox herzunehmen und die Einträge auszulesen, wobei man dann immer in evtl. vorhandene Unterverzeichnisse wechseln müsste usw.

Man kann aber auch das FileSystemObject verwenden. Dieses ist Bestandteil der Microsoft Scripting Runtime DLL (scrrun.dll).

Und genau diese Variante wollen wir wählen. Zunächst muss man dem Projekt die besagte DLL als Verweis hinzufügen (über "Projekt - Verweise"). Per Set FSO = New FileSystemObject wird das FileSystemObject instanziert. Nachdem man den Startordner (kann natürlich auch das Rootverzeichnis eines Laufwerks sein) festgelegt hat, gibt uns die SubFolders-Eigenschaft Auskunft darüber, ob sich innerhalb des Ordners weitere Unterordner befinden. Wenn ja, dann durchlaufen wir einfach alle SubFolders und prüfen erneut, ob es wiederum weitere Unterordner gibt. Da wir die Verzeichnistiefe ja nicht kennen, muss man in diesem Fall eine rekursive Funktion verwenden. Unter einer solchen Funktion versteht man eine Funktion, welche sich immer wieder selbst aufruft - solange, bis eine Abbruch-Bedingung erfüllt wird. In unserem Fall also, bis es keine weiteren Unterordner innerhalb eines Ordners gibt.

Das nachfolgende Codebeispiel ermittelt alle Ordner und Unterordner eines beliebigen Startverzeichnisses und schreibt diese in eine ListBox.

Erstellen Sie ein neues Projekt, setzen einen Verweis auf die Microsoft Scripting Runtime-DLL und plazieren auf die Form ein DriveList-Control (Drive1), einen CommandButton (cmdGO), sowie eine ListBox (List1). Beim Klicken auf den CommandButton werden dann alle Verzeichnisse des in der DriveList ausgewählten Laufwerks ermittelt und in der ListBox angezeigt.

Und hier der Code:

Option Explicit
Dim FSO As FileSystemObject
 
Private Sub cmdGO_Click()
  Dim sPath As String
 
  ' Alle Unterverzeichnisse lesen und in einer
  ' ListBox anzeigen
  List1.Clear
 
  ' FileSystemObject initialisieren
  Set FSO = New FileSystemObject
 
  ' Start-Ordner
  Screen.MousePointer = vbHourglass
  sPath = Left$(Drive1.Drive, 2)
  FSO_GetAllFolders List1, sPath
  Screen.MousePointer = vbNormal
End Sub
 
' Rekursive Funktion zum Ermitteln aller
' Ordner und Unterordner
Private Sub FSO_GetAllFolders(Liste As ListBox, _
  ByVal sPath As String)
 
  Dim Folder As Folder
  Dim SubFolder As Folder
 
  ' Ggf. abschliessenden Backslash anfügen
  If Right$(sPath, 1) <> "\" Then sPath = sPath & "\"
 
  Set Folder = FSO.GetFolder(sPath)
  Liste.AddItem sPath
 
  ' Ggf. Fehler "Zugriff verweigert" ignorieren
  On Local Error Resume Next
 
  ' Unterordner lesen
  If Folder.SubFolders.Count > 0 Then
    For Each SubFolder In Folder.SubFolders
      ' Hier wird die Funktion REKURSIV aufgerufen,
      ' um alle weiteren Unterordner des SubFolders
      ' zu ermitteln
      FSO_GetAllFolders Liste, sPath & SubFolder.Name
    Next
  End If
End Sub

Und wenn Sie sich den obigen Code anschauen, werden Sie feststellen, dass es sich hierbei um wirklich nur ein paar wenig benötigte Codezeilen handelt - dank dem FSO und natürlich der verwendeten Rekursion.

Und das ganze ist sogar schon sortiert, auch wenn die ListBox-Eigenschaft Sorted = False festgelegt ist. Halt ganz wie im Windows-Explorer
 

Dieser Tipp wurde bereits 48.969 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel