Rubrik: Dateisystem · Ordner & Verzeichnisse | VB-Versionen: VB5, VB6 | 19.02.02 |
Ordner kopieren/verschieben oder löschen Mit dem FileSystemObject ein Leichtes - das Kopieren, Verschieben oder Löschen eines kompletten Ordners. | ||
Autor: Dieter Otter | Bewertung: | Views: 51.632 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Wie würden Sie das Problem angehen, wenn es heisst einen kompletten Ordner mit allen darin befindlichen Dateien und Unterordner zu kopieren, verschieben oder zu löschen?
Zunächst per Dir-Funktion alle Dateien und Ordner ermitteln - das ganze rekursiv, da ja innerhalb der Ordner weitere Ordner und Dateien gespeichert sein könnten? Oder vielleicht über die API-Funktion SHFileOperation (siehe hierzu Kopieren, Verschieben, Löschen wie im Explorer) ?
Oder mit dem FileSystemObject!
Das FileSystemObject ist Bestandteil der Microsoft Scripting Runtime-DLL und bietet sehr viele Funktionen mit dem Umgang von Ordnern und Dateien. Um das FileSystemObject nutzen zu können, setzen Sie zunächst einen Verweis auf besagte DLL (Menü Projekt - Verweise).
Ordner kopieren
' Ordner kopieren Dim FSO As New FileSystemObject Dim Folder As Folder Dim sFolderPath As String Dim sDestPath As String ' Welcher Ordner soll kopiert werden? sFolderPath = "d:\temp\test\" ' Wohin soll der Ordner kopiert werden? sDestPath = "e:\" ' Kopiervorgang starten Set Folder = FSO.GetFolder(sFolderPath) Folder.Copy sDestPath
Ordner verschieben
' Ordner verschieben Dim FSO As New FileSystemObject Dim Folder As Folder Dim sFolderPath As String Dim sDestPath As String ' Welcher Ordner soll verschoben werden? sFolderPath = "d:\temp\test\" ' Wohin soll der Ordner veschoben werden? sDestPath = "e:\" ' Vorgang starten Set Folder = FSO.GetFolder(sFolderPath) Folder.Move sDestPath
Ordner löschen
' Ordner löschen Dim FSO As New FileSystemObject Dim Folder As Folder Dim sFolderPath As String Dim sDestPath As String ' Welcher Ordner soll gelöscht werden? sFolderPath = "d:\temp\test\" ' Löschvorgang starten Set Folder = FSO.GetFolder(sFolderPath) ' alles löschen Folder.Delete True ' Ordner/Dateien nur löschen, wenn diese nicht ' schreibgeschützt sind Folder.Delete False
Sie können das FileSystemObject auch per CreateObject-Anweisung verwenden. Dann muss nicht extra ein Verweis auf die Microsoft Scripting Runtime-DLL gesetzt werden.
Dim FSO As Object Dim Folder As Object On Error Resume Next Set FSO = CreateObject("Scripting.FileSystemObject") If Err <> 0 Then MsgBox "Scripting-Runtime DLL nicht vorhanden!" Else Set Folder = FSO.GetFolder(...) End If