Dateien die vor 30 Tagen verschoben wurden löschen
Servus,
das Thema wurde natürlich schon öfters behandelt und ich habe verschiedene Lösungsansätze selbst versucht, andere (auch hier im Bord) gefunden und versucht, aber bisher hat es nicht zu dem gewünschten Ergebnis geführt.
Vielleicht übersehe ich etwas, oder mache etwas falsch.
Wir haben hier ein allgemeines Temp Verzeichnis (manche würden es auch Müllhalde nennen), dessen Inhalt von Dateien, die vor 30 Tagen hinzugefügt wurden täglich befreit werden soll.
Mein Problem dabei: Wenn Dateien von anderer Stelle des gleichen Laufwerks in das Temp Verzeichnis verschoben werden, behalten diese ihre Zeiten von
Änderungsdatum / Erstelldatum / Letzter Zugriff
Sind diese bereits älter als 30 Tage, werden sie vom Task also am gleichen Tag gelöscht, an dem sie dort hin verschoben wurden, was natürlich nicht gewünscht ist.
Hatte es zunächst mit nem Batch versucht:
Das löscht aber eben alles mit Erstelldatum älter 30 Tage. Ist daher insgesamt ungeeignet.
Dann habe ich es mit dem Tool delage von Horst Schäffer und dem Parameter /accessed (Letzter Zugriff) ausprobiert, was ebenfalls nicht klappte.
An dieser Stelle bemerkte ich dann, dass keiner der genannten Parameter durch das Verschieben von Dateien in das Temp Verzeichnis geändert wird.
Dann habe ich es mit Powershell mit .LastWriteTime versucht, weil ich bin davon ausgegangen bin, dass dies den gewünschten Effekt bringt.
Macht es aber auch nicht.
Gibt es noch einen Paramater?
Kopierte Dateien sind kein problem, da sich hier Erstelldatum und letzter Zugriff ändert. Es betrifft nur verschobene.
Meine Idee, Komprimierung auf den Temp Ordner einzuschalten, hilft leider auch nicht. Hatte gehofft, dass dadurch die Datei bei der Ablage neu geschrieben wird.
das Thema wurde natürlich schon öfters behandelt und ich habe verschiedene Lösungsansätze selbst versucht, andere (auch hier im Bord) gefunden und versucht, aber bisher hat es nicht zu dem gewünschten Ergebnis geführt.
Vielleicht übersehe ich etwas, oder mache etwas falsch.
Wir haben hier ein allgemeines Temp Verzeichnis (manche würden es auch Müllhalde nennen), dessen Inhalt von Dateien, die vor 30 Tagen hinzugefügt wurden täglich befreit werden soll.
Mein Problem dabei: Wenn Dateien von anderer Stelle des gleichen Laufwerks in das Temp Verzeichnis verschoben werden, behalten diese ihre Zeiten von
Änderungsdatum / Erstelldatum / Letzter Zugriff
Sind diese bereits älter als 30 Tage, werden sie vom Task also am gleichen Tag gelöscht, an dem sie dort hin verschoben wurden, was natürlich nicht gewünscht ist.
Hatte es zunächst mit nem Batch versucht:
forfiles /P „Pfad\temp“ /S /C „cmd /c @path“ /D -30
Das löscht aber eben alles mit Erstelldatum älter 30 Tage. Ist daher insgesamt ungeeignet.
Dann habe ich es mit dem Tool delage von Horst Schäffer und dem Parameter /accessed (Letzter Zugriff) ausprobiert, was ebenfalls nicht klappte.
An dieser Stelle bemerkte ich dann, dass keiner der genannten Parameter durch das Verschieben von Dateien in das Temp Verzeichnis geändert wird.
Dann habe ich es mit Powershell mit .LastWriteTime versucht, weil ich bin davon ausgegangen bin, dass dies den gewünschten Effekt bringt.
Get-ChildItem „Pfad\Temp“ -Recurse | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-30)}
Macht es aber auch nicht.
Gibt es noch einen Paramater?
Kopierte Dateien sind kein problem, da sich hier Erstelldatum und letzter Zugriff ändert. Es betrifft nur verschobene.
Meine Idee, Komprimierung auf den Temp Ordner einzuschalten, hilft leider auch nicht. Hatte gehofft, dass dadurch die Datei bei der Ablage neu geschrieben wird.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 42996478043
Url: https://administrator.de/contentid/42996478043
Ausgedruckt am: 19.11.2024 um 17:11 Uhr
9 Kommentare
Neuester Kommentar
Moin,
einmal prüfen ob LastAccess deaktiviert ist mit:
MS Docs
-Thomas
einmal prüfen ob LastAccess deaktiviert ist mit:
fsutil behavior query disablelastaccess
disablelastaccess {1|0} Deaktiviert (1) oder aktiviert (0) Updates für den Stempel „Letzte Zugriffszeit“ in jedem Verzeichnis, wenn Verzeichnisse auf einem NTFS-Volume aufgeführt sind.
Sie müssen den Computer neu starten, damit dieser Parameter wirksam wird.
Sie müssen den Computer neu starten, damit dieser Parameter wirksam wird.
MS Docs
-Thomas
Hi.
Hier gibt es auch Lösungen ohne LastAccessTime (falls im FS deaktiviert wurde und man es nicht einschalten möchte/kann/darf)
Gruß Katrin
Hier gibt es auch Lösungen ohne LastAccessTime (falls im FS deaktiviert wurde und man es nicht einschalten möchte/kann/darf)
- Script oder Tool zum Löschen von Dateien die mehr als X Tage im Ordner existieren
- PS - Dateien im Ordner löschen
Gruß Katrin
Zitat von @pcpanik:
Hi, Danke für Deine Antwort.
Ergebnis: DisableLastAccess 3 , Systemverwaltet, aktiviert
Hieße, ich müsste es auf deaktiviert stellen, damit es nicht mehr disabled ist, richtig?
Hi, Danke für Deine Antwort.
Ergebnis: DisableLastAccess 3 , Systemverwaltet, aktiviert
Hieße, ich müsste es auf deaktiviert stellen, damit es nicht mehr disabled ist, richtig?
Ja.
fsutil behavior set disablelastaccess 0
Hi,
Du könntest jeden Tag abends/nachts 1x einen Job laufen lassen, welcher in diesem Temp einen Unterordner mit dem aktuellen Datum erstellt und dann alle Dateien und Ordner (mit Ausnahme dieser Datumsordner), welche in diesem Temp sind, in diesen Tages-Unterordner verschiebt.
Danach könntest Du alle Datumsordner durchlaufen und die abgelaufenen samt Inhalt löschen.
E.
Du könntest jeden Tag abends/nachts 1x einen Job laufen lassen, welcher in diesem Temp einen Unterordner mit dem aktuellen Datum erstellt und dann alle Dateien und Ordner (mit Ausnahme dieser Datumsordner), welche in diesem Temp sind, in diesen Tages-Unterordner verschiebt.
Danach könntest Du alle Datumsordner durchlaufen und die abgelaufenen samt Inhalt löschen.
E.
Oder Du lässt jeden Tag abends/nachts 1x einen Job laufen lassen, welcher einfach pro Tag ein Textfile mit dem aktuellen Inhalt des Temp Ordners erstellt. Je Zeile Dateipfad, Dateidatum
Dann könntest Du die Textfiles aller abgelaufenen Tage auswerten. Wenn eine in der TXT genannte Datei noch mit genau dem in der Datei genannten Datum existiert, dann wird sie gelöscht.
Wenn Dateien nachträglich noch einmal mit einer aktuelleren Version ersetzt werden, dann würden sie erst dann gelöscht, wenn abgelaufen.
Das wäre zwar die "DB-Variante", aber in schlank.
Dann könntest Du die Textfiles aller abgelaufenen Tage auswerten. Wenn eine in der TXT genannte Datei noch mit genau dem in der Datei genannten Datum existiert, dann wird sie gelöscht.
Wenn Dateien nachträglich noch einmal mit einer aktuelleren Version ersetzt werden, dann würden sie erst dann gelöscht, wenn abgelaufen.
Das wäre zwar die "DB-Variante", aber in schlank.
LastAccessDate ist mit Vorsicht zu genießen!
Aber Du könntest es ggf. zweckentfremden.
Also die Aktualisierung des LastAccessDate deaktiviert lassen (das ist ja Standard) und stattdessen dieses per Script setzen, wenn eine Datei "neu" im Temp gefunden wird.
- verursacht das zusätzliche Schreib-IO
- verursacht jeder Furz, der auf eine Datei zugreift, eine Aktualisierung. Das kann auch ein AV-Programm sein oder nur ein Dirscan durch den Explorer (wenn Thumbnails aktiviert) o.ä. - Edit: Auch Backup
Aber Du könntest es ggf. zweckentfremden.
Also die Aktualisierung des LastAccessDate deaktiviert lassen (das ist ja Standard) und stattdessen dieses per Script setzen, wenn eine Datei "neu" im Temp gefunden wird.