Wir verlosen einen Eee PC!

… mehr erfahren!


von postNils Kaczenski post1. Oktober 2006, 16:02 Uhr
post Kategorie: Scripting, VBScript

Wer kennt das nicht? Dateien, die ein bestimmtes Alter überschritten haben, sollen automatisch gelöscht werden. Im aktuellen Fall ging es um automatisch generierte Backupdateien einer Datenbankanwendung. Die Anforderung besagte, dass diese für 14 Tage aufbewahrt werden sollen. Mit Hilfe eines VB-Skripts lässt sich die Anforderung lösen.

Das folgende Skript löscht alle Dateien in einem bestimmten Ordner, die älter sind als eine einstellbare Zahl von Tagen. Dabei lässt sich die Auswahl der Dateien auf eine bestimmte Dateiendung einschränken.

Folgende Anpassungen sind vorzunehmen:

  • strOrdner: enthält den zu durchsuchenden Ordner
  • strExtension: enthält die Dateinamenserweiterung; "" findet einfach alle Dateien
  • intTage: Anzahl der Tage, die die Dateien mindestens alt sein müssen, damit das Skript sie löscht

Achtung, das Skript löscht ohne Rückfrage endgültig!

  1. Option Explicit
  2. Dim intZahl      '
  3. Dim strExtension      '
  4. Dim intTage           '
  5. Dim objDatei          '
  6. Dim objFSO            '
  7. Dim objOrdner         '
  8. Dim strOrdner         '
  9.  
  10. Set objFSO = CreateObject("Scripting.FileSystemObject")
  11. strOrdner = "D:\Temp\Dateien"
  12. strExtension = "bak"
  13. intTage = 30
  14.  
  15. Set objOrdner = objFSO.GetFolder(strOrdner)
  16. intZahl = 0
  17. For Each objDatei In objOrdner.Files
  18.     If LCase(Right(objDatei.name, Len(strExtension))) = LCase(strExtension) _
  19.         And DateDiff("d", objDatei.DateLastModified, Now) > intTage Then
  20.         objDatei.Delete
  21.         intZahl = intZahl + 1
  22.     End If
  23. Next
  24.  
  25. WScript.Echo intZahl & " Dateien gelöscht."