Veröffentlicht 11. September 20177 j Hallo Leute, ich versuche momentan ein Script zu erstellen. Der Sinn des Scriptes soll sein, eine Datei, welche im Netzwerk auf eine Transfer Partition kopiert wurde, nach 7 Tagen automatisch löschen zu lassen. Das Script würde dann auf dem Windows Server, welcher diese Partition im Netzwerk bereitstellt, ausgeführt werden. Beachtet werden muss jedoch, dass wenn man eine Datei in einen anderen Ordner kopiert, das "Erstellungsdatum" Attribut und das "Letze Änderung" Attribut nicht verändert wird. Heißt: Mein erster Versuch, Dateien welche vor 7 Tagen erstellt wurden in einen Ordner zu verschieben welcher automatisch gelöscht wird scheitert am Erstellungsdatum. Ich hoffe ihr habt ein paar goldene Ratschläge. Gruß Yannick
11. September 20177 j Wie wäre es wenn das Script die Datumsangabe in den Dateiname implementiert und es dann anhand der Bezeichnung sortiert und zuweist?
11. September 20177 j Und was hindert dich daran, gegen das Attribut CreationTime und nicht LastWriteTime zu prüfen?
11. September 20177 j Das Problem ist, das Mitarbeiter die Dateien auf das Transfer Laufwerk kopieren, damit andere Leute es sich auf ihre Workstation kopieren können. Das heißt, die Namen sind vollkommen random gewählt, und das Erstellungsdatum kann vor 2 Monaten gewesen sein. Die Dateien erhalten ja meines Wissens nach kein neues Attribut wenn ich die Datei auf eine andere Partition kopiere. So zumindest meine Beobachtung.
11. September 20177 j in Powershell gibt es den FileSystemWatcher. Der reagiert auf verschiedene Events innerhalb eines Ordners. im Created-Event könntest du z.B. die neu hinzugefügten Dateien mit dem aktuellen Zeitstempel merken und diese in einem extra Script einmal am Tag löschen. Als Basis könnte man das hier nutzen: https://gallery.technet.microsoft.com/scriptcenter/Powershell-FileSystemWatche-dfd7084b
11. September 20177 j Mit der Eigenschaft "LastAccessTime" unter PowerShell sollte es funktionieren. Ist dann ein Einzeiler."Get-childItem, | Where-objec | Remove-Item"
27. Oktober 20177 j Wie wäre es denn mit folgendem Vorschlag: Transfer Laufwerk beinhaltet für jeden Tag einen neuen Ordner mit folgender Datierung dd-mm-yyyy Dann nur ein kleines Script a la: if ordnername in transfer-laufwerk HeutigesDatum-7Tage, than rm ordnername, ifelse nächster ordner, else nix tun Ist zwar nicht die feine englische Art und Weise, würde dein Problem aber lösen
27. Oktober 20177 j @Mttkrb hat die Lösung doch schon geschrieben... Die Sortierung in diesem Thread ist nur nach Upvotes und nicht nach Datum - Mttkrb hat seinen Beitrag, der ganz oben steht, später geschrieben als Yannick seine Antwort mit dem Hinweis, dass die Dateien prinzipiell auch älter sein können. Unter dem ersten Post gibt es einen Umschalter "Nach Datum sortieren"/"Nach Bewertung sortieren".
31. Oktober 20177 j Bevor man sich mit PowerShell alle Finger bringt: FORFILES angucken, https://technet.microsoft.com/de-de/library/cc753551(v=ws.10).aspx
2. November 20177 j Da man sich auf die Informationen im Dateisystem wohl nicht verlassen kann (Erzeuge-/Änderungsdatum) könnte man z.B. eine Liste (CSV?) erstellen, in der der Dateiname, das Datum des ersten Erscheinens der Datei und ggf. ein Hashwert der Datei gespeichert wird. Täglich würde dann folgendes ausgefüht: Taucht ein Dateiname zum ersten Mal auf, trägt man den kompletten Pfad, Hash und aktuelles Datum in die Liste ein. Ist ein Dateiname schon verhanden und das gespeicherte Datum älter als 7 Tage, prüft man den aktuellen Hash mit dem gespeicherten. Hat sich der Hashwert der Datei geändert, wurde sie überschreiben/geändert und das Datum der Erscheinenens wird auf das aktuelle Datum gesetzt. Hat er sich nicht geändert ist die Datei älter als 7 Tage in der Liste und wird gelöscht.. Hashen ist wohl Overkill und langsam bei großen Dateien. Statt dem Hash könnte man natürlich auch das Datei-Änderungsdatum nehmen, wenn man davon ausgehen kann dass da etwas sinvolles drinsteht (der Fall erinnert mich an Daten von nem Industrie-PC ohne/mit defekter CMOS Clock in nem Novell Netz: Alles mit Datum 1.1.1980 ). Grüße Ripper
2. November 20177 j Lösung In der Tat war die Lösung sehr simpel: Wir haben auf Windows Server 2016 geupdatet. Dort ist eine Funktion zur Dateisystembereinigung direkt vorhanden, dementsprechend nutzen wir jetzt diese. Ich danke euch allen für eure Antworten und Ideen. Gruß Yannick
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.