FAQ 0002: Wie kann ich eine Datei oder einen Ordner löschen?
von Helge Rex
Frage
Wie kann ich eine Datei oder einen Ordner löschen?
Die hier gezeigten Quelltexte stammen von Helge Rex.
Datei mit VB-Funktionen löschen
Visual Basic stellt die Methode Kill() zur Verfügung. Als Parameter wird der Name der Datei erwartet. Wird kein Pfad angegeben, wird die Datei im aktuellen Verzeichnis gelöscht.
Private Sub TestSub() Dim strOldFile As String strOldFile = Environ$("TEMP") & "\TempFile.tmp" Kill strOldFile End Sub
Verzeichnis mit VB-Funktionen löschen
Um Verzeichnisse zu löschen, stellt Visual Basic die Methode RmDir() zur Verfügung. Als Parameter wird der Name des Verzeichnisses erwartet. Wird kein Pfad angegeben, wird das Verzeichnis im aktuellen Verzeichnis gelöscht.
Enthält das Verzeichnis noch Dateien oder weitere Verzeichnisse, müssen diese erst beseitigt werden.
Private Sub TestSub() Dim strOldFolder As String strOldFolder = Environ$("TEMP") & "\TempDir" RmDir strOldFolder End Sub
Datei mit API-Funktionen löschen
Die API-Funktion DeleteFile aus der kernel32.dll muß referenziert und der Dateiname an die API-Funktion übergeben werden. Hier ist unbedingt darauf zu achten, daß die Datei geschlossen ist, sonst droht Datenverlust!
Private Declare Function DeleteFile Lib "kernel32.dll" _ Alias "DeleteFileA" ( _ ByVal lpFileName As String) As Long Private Sub TestSub() Dim strOldFile As String strOldFile = Environ$("TEMP") & "\TempFile.tmp" If (DeleteFile(strOldFile) = 0) Then MsgBox "Fehler beim Löschen", vbOKOnly Or vbInformation End If End Sub
leeres Verzeichnis mit API-Funktionen löschen
Verzeichnisse werden mit der Funktion RemoveDirectory entfernt. Wenn das Verzeichnis nicht leer ist, wird ein Fehler gemeldet.
Private Declare Function RemoveDirectory Lib "kernel32.dll" _ Alias "RemoveDirectoryA" ( _ ByVal lpPathName As String) As Long Private Sub TestSub() Dim strOldFolder As String strOldFolder = Environ$("TEMP") & "\TempDir" If (RemoveDirectory(strOldFolder) = 0) Then MsgBox "Fehler beim Löschen", vbOKOnly Or vbInformation End If End Sub
Verzeichnis mit Inhalt mit API-Funktionen löschen
Um ein Verzeichnis zu löschen, welches nicht leer ist, kann der Den Shell-Dialog zum Löschen nutzen [Tipp 0323] verwendet werden.
Datei mit WSH-Funktionen löschen
Das FileSystem-Objekt stellt die Methode DeleteFile() zur Verfügung. Wer nicht auf das FSO verzichten möchte, muß der Methode den Namen der Datei übergeben, auch hier kann der Pfad enthalten sein. Zusätzlich kann man angeben, ob eine Datei trotz Schreibschutzes gelöscht werden soll.
Private Sub TestSub() Dim objFSO As Scripting.FileSystemObject Dim strOldFile As String strOldFile = Environ$("TEMP") & "\TempFile.tmp" Set objFSO = New Scripting.FileSystemObject objFSO.DeleteFile strOldFile Set objFSO = Nothing End Sub
Verzeichnis mit WSH-Funktionen löschen
Dazu wird die Methode DeleteFolder() vom FileSystem-Object zur Verfügung gestellt. Wer nicht auf das FSO verzichten möchte, muß der Methode den Namen des Verzeichnisses übergeben, auch hier kann der Pfad enthalten sein. Zusätzlich kann man angeben, ob das Verzeichnis trotz darin enthaltener Dateien gelöscht werden soll.
Private Sub TestSub() Dim objFSO As Scripting.FileSystemObject Dim strOldFolder As String strOldFolder = Environ$("TEMP") & "\TempDir" Set objFSO = New Scripting.FileSystemObject objFSO.DeleteFolder strOldFolder Set objFSO = Nothing End Sub
Ihre Meinung
Falls Sie Fragen zu dieser FAQ haben, Ihre Erfahrung mit anderen Nutzern austauschen möchten oder auf eine Ergänzung hinweisen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.