Thomas Füssl
 
  zurück      Startseite      Gästebuch      Kontakt 
  ©2003 by thfu - Mail an Webmaster   

Freeware

nach Themen:
 Internet
 Multimedia
 System
 Visual Basic

nach Kategorien:
 Programme
 VB-Bibliotheken
 VB-Sourcecode

Index:
 Alle Downloads
 Alle Artikel


Über...

 Sinn und Unsinn
 Gästebuch
 über mich


Partner-Link
EMails und 1 GB kostenloser Speicher bei
GMX

Partner-Link
Bücher bestellen bei
Amazon

 

Freeware
Programme

Mini-WebServer
kleinster Web-Server
VBTools
Werkzeuge für Visual Basic
KeyReMap
Tasten umbelegen
Exe/Bmp-PropertyPage
Eigenschaftsseite
VB-Setup
Setup-Programm
Registry-Tricks


VB-Bibliotheken


Apfel.Ocx
Apfelmännchenprogramm
RegExp.Dll
Reguläre Ausdrücke für VB
SerialID.Dll
Disk-Nummer r/w


VB-Sourcecode Tipps&Tricks


TCP/IP-Klassen
Rekursiv
MIME-Kodierung (base64)
Internet
MinMax
Format 8.3
Standard-Dialoge


Auf alle Dateien im Verzeichnis inkl. Unterverzeichnisse zugreifen

Oft hört man die Frage: Wie kann ich alle Dateien inkl. derer in Unterverzeichnissen kopieren bzw. Dateioperationen durchführen?

Antwort: Mit nachfolgendem rekursiven Algorithmus. Zwar ist der Dir$-Befehl nicht wiedereintrittsfähig, aber man kann dies umgehen imdem man zuerst alle Dateien bzw. Verzeichnisse in eine Collection einliest.

Folgender Befehl kopiert alle *.gif-Dateien im und unterhalb des Verzeichnisses 'c:\bilder' ins Verzeichnis 'c:\sicherheitskopie':
     rekursiv "c:\bilder", "*.gif", "c:\sicherheitskopie"


Sub rekursiv(von$, muster$, nach$)

If Right$(von$, 1) <> "\" Then von$ = von$ + "\"
If Right$(nach$, 1) <> "\" Then nach$ = nach$ + "\"

'Dateien einlesen
Dim Dateien As New Collection
a$ = Dir$(pfad$ + muster$)
Do While Len(a$)
   Dateien.Add a$: a$ = Dir$
Loop
For Each datei In Dateien
   FileCopy von$ + datei, nach$ + datei  'oder anderer Befehl
Next

'Unterverzeichnisse einlesen
Dim Verzeichnisse As New Collection
a$ = Dir$(pfad$ + "*.*", 16): verz$ = ""
Do While Len(a$)
   If (GetAttr(pfad$ + a$) And 16) = 16 And a$ <> "." And a$ <> ".." Then
      Verzeichnisse.Add a$
   End If
   a$ = Dir$
Loop
For Each Verzeichnis In Verzeichnisse
   MkDir nach$ + Verzeichnis  'ggf.
   rekursiv von$ + Verzeichnis, muster$, nach$ + Verzeichnis  'rekursiver Aufruf!
Next

Set Dateien = Nothing
Set Verzeichnis = Nothing

End Sub

Noch einfacher geht's, wenn man ein Verzeichnis-Steuerelement (DirListBox) hinzunimmt:
     Dir1.Path = "c:\bilder"
     rekursiv


Sub rekursiv()

For n% = 1 To Dir1.ListCount
   verz$ = Dir1.List(n% - 1)
   'hier alle Dateien in verz$ verarbeiten
   Dir1.Path = verz$
   rekursiv
   Dir1.Path = ".."
Next

End Sub