none
Dateien nach Alter löschen RRS feed

  • Frage

  • Hallo zusammen,

    wir haben seit kurzem auf unserem Fileserver (2012 R2) ein Datenaustausch-Verzeichnis zum temporären, bereichsübergreifenden Datenaustausch. Dateien die sich darauf befinden, sollen nach 7 Tagen gelöscht werden. Dafür habe ich eine Batch-Datei entworfen und in den Aufgaben-Planer gepackt. Soweit funktioniert das auch, allerdings gibt es ein Problem in der Unterscheidung zwischen Erstelldatum und Änderungsdatum. Mit meiner Batch-Datei guckt er ausschließlich nach dem Änderungsdatum. Das wird spätestens dann ein Problem, wenn jemand eine ältere Datei reinlegt, das heißt eine Datei, die er vor sagen wir 3 Monaten das letzte Mal bearbeitet hat und jetzt weitergeben möchte. Legt er diese Datei ins Datenaustausch-Verzeichnis, bekommt sie zwar das aktuelle Erstelldatum, allerdings ein zu altes Änderungsdatum. Dementsprechend wird diese Datei gelöscht, sobald der Task das nächste Mal durchläuft. Ziel soll es sein, dass sowohl nach Änderungsdatum, als auch nach Erstelldatum geschaut wird und erst gelöscht wird, wenn beides älter 7 Tage ist.

    Batch:

    mkdir E:\Datenaustausch_to_delete
    robocopy.exe E:\Datenaustausch E:\Datenaustausch_to_delete /E /MOVE /MINAGE:8 /R:1 /W:1
    del E:\Datenaustausch_to_delete\*.* /s /q

    Danke im Voraus.


    • Bearbeitet LNAG Dienstag, 29. Juli 2014 10:05 Grammatik
    Dienstag, 29. Juli 2014 09:59

Antworten

Alle Antworten

  • Moin

    Kenn für solche Aufgaben kleines Tool "DelAge32". Habe damit gute Erfahrungen gemacht:http://www.horstmuc.de/wbat32d.htm

    MfG

    • Als Antwort markiert LNAG Donnerstag, 31. Juli 2014 09:47
    Dienstag, 29. Juli 2014 10:15
  • > Kenn für solche Aufgaben kleines Tool "DelAge32". Habe damit gute
     
    ...und wer Third Party Produkte scheut, der verwendet "forfiles /?"...
     

    Martin

    Mal ein GUTES Buch über GPOs lesen?

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    And if IT bothers me - coke bottle design refreshment :))
    Dienstag, 29. Juli 2014 16:13
  • Grmpf - man sollte zweimal schauen :-) Ok, hab nix gesagt - auch
    forfiles geht (wie robocopy) auf das Änderungsdatum, nicht auf das
    Erstellungsdatum...
     

    Martin

    Mal ein GUTES Buch über GPOs lesen?

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    And if IT bothers me - coke bottle design refreshment :))
    Dienstag, 29. Juli 2014 16:14
  • Mach es mit VBS:

    ' Zeitdifferenz in Tagen
    dim iDays
    iDays = 7
    
    ' Pfad des Ordners in dem die Dateien liegen
    dim sPath
    sPath = "C:\Ordner"
    
    
    
    	Dim fso, f, f1, fc
    	Set fso = CreateObject("Scripting.FileSystemObject")
    	Set f = fso.GetFolder(sPath)
    	Set fc = f.Files
    	
    	For Each f1 in fc
    		If DateDiff("d", f1.DateLastModified, Now) > iDays AND DateDiff("d", f1.DateCreated, Now) > iDays Then
    			f1.Delete
    		End If
    	Next
    
    Set fso = Nothing
    Set f = Nothing
    Set fc = Nothing
    

    Gruß,
    Matthias



    Mittwoch, 30. Juli 2014 14:35
  • Hallo LNAG,

    ich würde das Thema mit Hilfe der PowerShell lösen. Mit dem cmdlet get-childitem kannst du zwischen CreationTime, LastWriteTime und LastAccessTime unterscheiden.

    Gruß,

    Heyko

    Donnerstag, 31. Juli 2014 07:12
  • Hey,

    vielen Dank für die Antworten. Das Tool delage32 tut genau das, was ich mir erhofft hatte und lief jetzt zwei Tage ohne Probleme durch!

    LG

    Donnerstag, 31. Juli 2014 09:47