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 Dieser Tipp wurde bereits 35.282 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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. |
vb@rchiv CD Vol.6 ![]() ![]() Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats Neu! sevPopUp 2.0 ![]() Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... |
||||||||||||||||
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. |