Dateien automatisch löschen die älter als 3 Tage sind

darkrider84

Ensign
Registriert
Apr. 2015
Beiträge
145
Hallo,
ich suche ein Script (am besten in AutoHotkey, AutoIT, oder als Batch), dass Dateien in einem bestimmten Ordner löscht, die älter als 3 Tage sind.
Damit das alles automatisch geschieht, würde ich einen Eintrag im Taskplaner anlegen.

Ich habe schon etwas gegoogelt und blicke zumindest bei Batch (Forfiles...) und Powershell gar nicht durch...

Hat jemand eine elegante Lösung?

Danke im Voraus.
 
Code:
Get-ChildItem H:\Test | where-object { $_.LastWriteTime -lt (get-date).adddays(-3)} | Foreach { Get-ChildItem $_.pspath | Remove-Item -recurse }

als Powershell Skript.

Habs mal bei mir getestet - funktioniert.


MfG

Lucky
 
Zuletzt bearbeitet:
Bei mir irgendwie nicht...
Dann muss ich ja was falsch machen.

Fehlermeldung:

Code:
PS C:\Users\darkrider84> C:\Users\darkrider84\Videos.ps1
Get-ChildItem : Der Pfad "C:\Users\darkrider84\Get-ChildItem" kann nicht gefunden werden
, da er nicht vorhanden ist.
Bei C:\Users\darkrider84\Videos.ps1:1 Zeichen:14
+ Get-ChildItem <<<<  Get-ChildItem H:\Test | where-object { $_.LastWriteTime -lt (get-d
ate).adddays(-3)} | Foreach { Get-ChildItem $_.pspath | Remove-Item -recurse }  | where-
object { $_.LastWriteTime -lt (get-date).adddays(-3)} | Foreach { Get-ChildItem $_.pspat
h | Remove-Item -recurse }
    + CategoryInfo          : ObjectNotFound: (C:\Users\darkrider84\Get-ChildItem:Strin 
   g) [Get-ChildItem], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCo 
   mmand

Mein Code:

Code:
Get-ChildItem G:\Users\AndererBenutzer\Videos\aufnahmen\ArmA 3 | where-object { $_.LastWriteTime -lt (get-date).adddays(-3)} | Foreach { Get-ChildItem $_.pspath | Remove-Item -recurse }
 
Das Leerzeichen im Verzeichnisnamen "ArmA 3" wird wohl der Übeltäter sein.
 
Verzeichnisnamen mit Leerzeichen sollte man mit via "<Verzeichnis>" ("Hier ist ein langer Verzeichnisname") klammern.

Keinen Plan ob man das unter der Powershell aber genauso macht.
 
Code:
Get-ChildItem("E:\Neuer Ordner") | where-object { $_.LastWriteTime -lt (get-date).adddays(-3)} | Foreach { Get-ChildItem $_.pspath | Remove-Item -recurse }


Jetzt klappts auch mit Leerzeichen.


MfG

Lucky
 
Danke, jetzt funktioniert es auch bei mir ;)
Wie funktioniert es, wenn ich es mit mehreren Ordnern machen möchte...
Geht das in einer Shell oder soll ich einfach mehrere Dateien anlegen?

Grüße
 
Ich würde für jeden Pfad ein eigenes Skript nehmen und es dementsprechend bennen - so siehst du direkt wo es hin geht, ohne extra den Code anzuschauen.

MfG

Lucky
 
Irgendwie kriege ich die PowerShell nicht als Aufgabe definiert.
Wenn ich die Aufgabe testweise ausführen will, kommt immer nur die Meldung vom Screenshot.

Wie muss ich genau vorgehen?
Auf meinem PC ist PowerShell 4 installiert.
 

Anhänge

  • Ashampoo_Snap_2015.05.22_03h37m07s_001_.png
    Ashampoo_Snap_2015.05.22_03h37m07s_001_.png
    37,3 KB · Aufrufe: 322
Du versuchst hier die powershell_ise.exe zu benutzen. Das ist die Powershell-Entwicklungsumgebung, das kann nicht klappen. :) So klappts:
powershell.exe -file C:\Pfad-zu-deinem-Script\script.ps1
 
Danke, so klappt es.
Gibt es noch einen Parameter, damit sich das Fenster (sieht aus wie cmd.exe) nicht öffnet?
 
Nein, das Fenster erscheint leider trotzdem.
 
Bei mir klappts. Das Fenster erscheint für einen kurzen Moment und verschwindet dann. Beachte:

-File
Führt das angegebene Skript im lokalen Gültigkeitsbereich aus (Eingabe eines Punkts vor dem Befehl), sodass die
vom Skript erstellten Funktionen und Variablen in der aktuellen Sitzung
verfügbar sind. Geben Sie den Skriptdateipfad und mögliche Parameter ein.
"File" muss der letzte Parameter im Befehl sein, da alle Zeichen, die
nach dem File-Parameternamen eingegeben sind, als Skriptdateipfad gefolgt
von den Skriptparametern interpretiert werden.

Also so: powershell.exe -WindowStyle hidden -File C:\Pfad-zu-deinem-Script\script.ps1
 
Wenn dich auch das kurze Aufpoppen des Fensters stört, kannst du es auch so machen:

Eine Verknüpfung vom Skript erstellen und in den Eigenschaften bei "Ausführen" den Punkt "Minimiert" auswählen.
So kommt nur ein kurzes Icon in der Taskleiste/Superbar,....

Musst dann natürlich die Verknüpfung im Taskplaner auswählen und nicht die eigentliche Datei.

MfG

Lucky
 
Zurück
Oben