Jump to content

Per Batch dateien löschen, die älter sind als x Tage/Monate


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

ich möchte gerne per BATCH und möglichst mit Bordmitteln und ohne VBS/JS Dateien löschen, die älter sind als das angegebene Datum oder Zeitspanne.

 

Dazu habe ich folgenden Thread gefunden:

http://www.mcseboard.de/windows-forum-allgemein-28/gezieltes-loeschen-ordnern-dateien-109911.html

 

Leider hilft mir das nicht wirklich weiter.

 

Ich lasse Backups erstellen in Form von RAR-Dateien.

Wenn die existierenden älter sind als 2 Monate sollen sie gelöscht werden, um Speicherplatz zu sparen.

 

Danke im Vorraus!

Link zu diesem Kommentar

Da gefällt mir dann doch die Variante von NilsK besser, da ich dann keine extra .exe brauche.

 

Option Explicit
Dim intZahl      '
Dim strExtension      '
Dim intTage           '
Dim objDatei          '
Dim objFSO            '
Dim objOrdner         '
Dim strOrdner         '

Set objFSO = CreateObject("Scripting.FileSystemObject")
strOrdner = command$
strExtension = "exe"
intTage = 56

Set objOrdner = objFSO.GetFolder(strOrdner)
intZahl = 0
For Each objDatei In objOrdner.Files
   If LCase(Right(objDatei.name, Len(strExtension))) = LCase(strExtension) _
       And DateDiff("d", objDatei.DateLastModified, Now) > intTage Then
       objDatei.Delete
       WScript.Echo "Lösche " & objDatei.name
       intZahl = intZahl + 1
  End If
Next

 

So richtig?

Link zu diesem Kommentar

Moin,

 

strOrdner = command$

[...]

So richtig?

 

nö. strOrdner sollte schon den absoluten Pfad enthalten und muss darüber hinaus den Wert in Anführungsstrichen haben (siehe die Vorlage). Sonst sollte es laufen.

 

Ach so, und du solltest es mit cscript aufrufen, sonst wirst du ziemlich viele Boxen wegklicken müssen.

 

Gruß, Nils

Link zu diesem Kommentar

Klar lasse ich es mit cscript...

 

Hab's nun raus. Es sollte nämlich alles per Script-Argumente einlesen:

 

Option Explicit
Dim intZahl
Dim strExtension
Dim intTage
Dim objDatei
Dim objFSO
Dim objOrdner
Dim strOrdner

Set objFSO = CreateObject("Scripting.FileSystemObject")
strOrdner = Wscript.Arguments(0)
strExtension = Wscript.Arguments(1)
intTage = Wscript.Arguments(2)

Set objOrdner = objFSO.GetFolder(strOrdner)
intZahl = 0
For Each objDatei In objOrdner.Files
   If LCase(Right(objDatei.name, Len(strExtension))) = LCase(strExtension) _
       And DateDiff("d", objDatei.DateLastModified, Now) > intTage Then
       objDatei.Delete
       WScript.Echo "Lösche " & objDatei.name
       intZahl = intZahl + 1
  End If
Next
WScript.Echo intZahl & " Dateien gelöscht."

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...