Rubrik: Dateisystem · Ordner & Verzeichnisse | VB-Versionen: VB4, VB5, VB6 | 25.06.02 |
Ordnerstruktur 1:1 kopieren Mit der VBEx32.DLL ein Leichtes: Kopieren einer kompletten Ordnerstruktur - und zwar 1:1 | ||
Autor: Dieter Otter | Bewertung: | Views: 18.091 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Vor kurzem wurden wir im Forum gefragt, wie sich eine vorhandene Ordnerstruktur 1:1 kopieren lässt. Hierbei sollten nicht die in den Ordnern und Unterordnern enthaltenen Dateien kopiert werden, sondern einfach nur alle Ordner und ggf. vorhandene Unterordner ermittelt werden und genau diese ermittelte Ordnerstruktur auf einem anderen Laufwerk bzw. innerhalb eines anderen Ordners erstellt werden.
Zu diesem Zeitpunkt gab es bereits die ersten Releases unserer VBEx32.DLL, so dass obige Frage schnell beantwortet war, denn mit den in der VBEx32.DLL enthaltenen Funktionen lässt sich eine Ordnerstruktur "verdammt schnell" ermitteln und auch erstellen.
Sollten Sie die Visual Basic Extended Libaray (kurz VBEx32.DLL) noch nicht installiert haben, so downloaden und installieren Sie diese über nachfolgenden Link.
Download: VBEx32.DLL (Setup - 598 KB)
Um eine komplette Ordnerstruktur 1:1 zu kopieren, benötigen Sie nachfolgende Funktionen aus dem "Befehlsverzeichnis" der VBEx32.DLL:
' benötigte Funktions-Deklarationen Private Declare Function VBEX_FolderList Lib "vbex32.dll" _ Alias "VBFOLDERLIST" ( _ ByVal sPath As String, _ nSubFolder As Integer, _ sFolders() As String) As Long Public Declare Function VBEX_MakeDir Lib "vbex32.dll" _ Alias "VBMAKEDIR" ( _ ByVal sPath As String) As Integer
Und hier der "Kopier"-Code:
Dim nCount As Long Dim sSource As String Dim sDest As String Dim sLast As String Dim i As Long ' Ausgangsverzeichnis sSource = "d:\" ' Zielverzeichnis sDest = "e:\temp" If Right$(sDest, 1) = "\" Then sDest = Left$(sDest, Len(sDest) - 1) ' zunächst alle Ordner / Unterordner des ' Ausgangsverzeichnisses ermitteln Screen.MousePointer = vbHourglass ReDim sFolders(5000) As String nCount = VBEX_FolderList(sSource, 1, sFolders()) If nCount >= 0 Then ' Jetzt Ordner-Struktur kopieren For i = nCount To 0 Step -1 If Left$(sLast, Len(sFolders(i)) + 1) <> sFolders(i) & "\" Then VBEX_MakeDir sDest & sFolders(i) sLast = sFolders(i) & "\" End If Next i MsgBox "Ordnerstruktur wurde 1:1 kopiert!" Else MsgBox "Ausgangsverzeichnis enthält keine Ordner." End If
Der Vorteil von VBEX_MakeDir gegenüber der normalen MKDIR-Anweisung in VB ist, dass die VBEx-Funktion autom. verschachtelte Unterverzeichnisse erstellen kann. Deshalb durchlaufen wir die ermittelte Ordner-Liste auch rückwärts.