Rubrik: Dateisystem · Dateien allgemein | VB-Versionen: VB5, VB6 | 04.03.02 |
Alle temporären Dateien löschen Dieses Beispiel zeigt, wie man das gesamte System nach tmp-Dateien durchsuchen und diese autom. löschen kann. | ||
Autor: Dieter Otter | Bewertung: | Views: 34.534 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Im Laufe der Zeit sammeln sich auf dem System viele temporäre Dateien an. Bei diesen Dateien mit der Endung tmp handelt es sich um Dateien, die entweder vom System selbst oder von den Anwendungsprogrammen erzeugt wurden, um Daten und oder Einstellungen temporär zwischenzuspeichern.
Diese temporären Dateien belegen nicht nur Speicherplatz, sondern verlangsamen auch das System.
Das nachfolgende Beispiel zeigt, wie man das gesamte System - also alle Festplatten-Laufwerke - nach temporären Dateien durchsuchen und diese autom. löschen kann.
Am einfachsten erschien es mir für diesen Zweck das FileSystemObject oder kurz FSO zu verwenden. Dieses ist Bestandteil der Windows Scripting Runtime-DLL und wird über "Projekt - Verweise" in das aktuelle VB-Projekt eingefügt.
Um das nachfolgende Beispiel zu testen, erstellen Sie ein neues Projekt und setzen zunächst einen Verweis auf obige DLL. Plazieren Sie auf die Form einen CommandButton (cmdStart), ein Label-Control (lblPath) und eine CheckBox (chkShowDialog).
Fügen Sie nachfolgende Code in den Codeteil der Form ein.
Option Explicit Dim FSO As FileSystemObject
Private Sub Form_Load() ' FileSystemObject-Variable erstellen Set FSO = New FileSystemObject chkShowDialog.Caption = "Löschen mit Bestätigung" chkShowDialog.Value = 1 cmdStart.Caption = "Starten" End Sub
Private Sub cmdStart_Click() Dim Drives As Drives Dim Drive As Drive ' alle Laufwerke ermitteln Screen.MousePointer = vbHourglass Set Drives = FSO.Drives For Each Drive In Drives ' Laufwerkstyp Festplatte? If Drive.DriveType = Fixed Then ' jetzt alle Ordner nach TMP-Files durchsuchen ' und löschen FSO_KillTempFiles Drive.DriveLetter & ":\", _ CBool(chkShowDialog.Value) End If Next Screen.MousePointer = vbNormal End Sub
' Alle TMP-Dateien eines Ordners löschen Private Sub FSO_KillTempFiles(ByVal sPath As String, _ Optional ByVal bShowDialog As Boolean = False) Dim Folder As Folder Dim SubFolder As Folder ' Ggf. abschliessenden Backslash anfügen If Right$(sPath, 1) <> "\" Then sPath = sPath & "\" lblPath.Caption = sPath DoEvents Set Folder = FSO.GetFolder(sPath) If Dir(sPath & "*.tmp") <> "" Then If bShowDialog Then ' zunächst Lösch-Hinweis anzeigen If Msgbox("Der Ordner " & sPath & " enthält ein " & _ "oder mehrere temporäre Dateien" & vbCrLf & _ "Dateien jetzt löschen?", vbQuestion + vbYesNo, _ "Löschbestätigung") = vbYes Then ' temporäre Dateien löschen Kill sPath & "*.tmp" End If Else ' Löschen ohne Abfrage Kill sPath & "*.tmp" End If End If ' Ggf. Fehler "Zugriff verweigert" ignorieren On Local Error Resume Next ' Unterordner If Folder.SubFolders.Count > 0 Then For Each SubFolder In Folder.SubFolders ' Hier wird die Funktion REKURSIV aufgerufen, ' um alle weiteren Unterordner des SubFolders ' zu ermitteln FSO_KillTempFiles sPath & SubFolder.Name, bShowDialog Next End If End Sub