vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Dateisystem · Ordner & Verzeichnisse   |   VB-Versionen: VB5, VB619.02.02
Ordner kopieren/verschieben oder löschen

Mit dem FileSystemObject ein Leichtes - das Kopieren, Verschieben oder Löschen eines kompletten Ordners.

Autor:   Dieter OtterBewertung:  Views:  51.580 
www.tools4vb.deSystem:  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



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.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle 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.