# VB Script - Dateien löschen



## Ceza (9. Mai 2005)

Hallo Leute,

ich würd gern ein VBScript schreiben, welches Dateien in einem bestimmten Ordner löscht. Aber nur Dateien die älter als 2 Monate sind.

Hab leider nicht gerade viel Ahnung von VBScript und wollte fragen ob es da vielleicht nen beispielscript gibt oder ne vorlage, oder ob jemand darüber bescheid weiss.


----------



## Sven Mintel (9. Mai 2005)

Eine Datei löscht man über _Delete_.
Wann sie erstellt wurde, ermittelst du über die Eigenschaft _DateCreated_
Am Besten besorgst du dir von MS die Windows-Scripting-Referenz, da steht alles drin, auch Codebeispiele.


----------



## Ceza (9. Mai 2005)

ich hab bisher das hier mal geschafft


```
''VB SCRIPT FOR DELETING TEMPORARY LOG FILES

Dim WshShell, fso, test

Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("wscript.shell")

On Error Resume Next

test = fso.datecreated
MsgBox(test)
fso.deleteFile ("C:\TestTemp\*.log")
```

die dateien werden gelöscht, aber eben noch nicht danach wie alt sie sind.
ich versuche hier irgendwie per msgbox zu sehen wann die datei erstellt wurde, krieg aber keinen text zurück. ich wollte eine solche abfrage machen, ka ob das stimmt

if fso.datecreated > 6 then
fso.deletefile ("C:\testtemp\*.log)

aber das würd so ja nicht gehen.


----------



## Sven Mintel (9. Mai 2005)

du musst mittels GetFile() einen Zeiger auf die Datei erzeugen, auf welche du die Methoden anwendest.
du musst einen tatsächlichen Dateipfad eingeben, Wildcards funktionieren da nicht
um zu ermitteln, wieviel Tage eine Datei alt ist, verwende die Methode DateDiff()
...

```
Dim WshShell, fso, file

Set fso      = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.shell")
Set file     = fso.GetFile("C:\\TestTemp\\dateiname.log")

if (DateDiff("d", file.DateCreated, Now)) > 6 Then file.Delete
```

BTW: vielleicht solltest du auf "On Error Resume Next" erstmal verzichten, ... woher willst du sonst wissen, ob und welcher Fehler auftritt.


*PS: wenn du in deinem Skript die Kleinschreibung bevorzugst, ist das deine Sache.
Beim Erstellen von Beiträgen ist hier im Board die Verwendung von korrekter Gross/Kleinschreibung erwünscht *


----------



## Ceza (11. Mai 2005)

Ok ich hab das soweit hingekriegt, dass es tatsächlich funktioniert 

Nur bräucht ich noch was, im Moment lösche ich die Dateien nach Alter des Erstellungsdatum, ich bräucht aber ned DateCreated sondern wann es zuletzt geändert wurde.


----------



## MAN (11. Mai 2005)

probiers mal mit folgendem:

```
if (DateDiff("d", file.DateLastModified, Now)) > 6 Then file.Delete
```
Hoffe das ist das, was du erreichen wolltest.

mfG,
MAN


----------

