Freeware
Programme
VB-Bibliotheken
VB-Sourcecode Tipps&Tricks
|
|
|
|
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
|
|
|