Die Community zu .NET und Classic VB.
Menü

FAQ 0002: Wie kann ich eine Datei oder einen Ordner löschen?

 von 

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

Listing 1: Datei mit Kill() löschen

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

Listing 2: Verzeichnis mit RmDir() löschen

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

Listing 3: Datei mit DeleteFile() löschen

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

Listing 4: Verzeichnis mit RemoveDirectory() löschen

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

Listing 5: Eine Datei mit dem FSO löschen

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

Listing 6: Ein Verzeichnis mit dem FSO löschen

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.