Dieser Beitrag ist schon älter. Bitte vergewissern Sie sich, dass die Rahmenbedingungen oder der enthaltene Lösungsvorschlag noch dem aktuellen Stand der Technik entspricht.

Löschen von bestimmten Dateien ( z.B. Endung .mp3 .wma .tmp .log), die älter als n Tage sind.

Mitglied: greenhorn101

Skript für Powershell v1.0

Hallo zusammen,
ich bin neu eingestiegen bei PowerShell und gerade dabei mein Wissen aufzubauen.

Folgendes Problem habe ich: Ich will gewisse Daten mit verschiedenen Endungen bzw. verschiedenen Teilstrings des Namens der Dateien löschen
Endungen: *.temp , *.log , *.txt .mp3. wma etc. Teilstring: blabla* , blablabla* lied1* lied2* etc.

Wie man nach n Tagen löscht habe ich wie folgt gemacht:
Dabei habe ich die Tage auf 10 gesetzt, dass funktionier auch, aber es löscht ja alle Dateien, auch die, die ich behalten will, die älter als zehn Tage sind.

Get-Childitem -recurse E:\test\$j | Where-Object {($Today-$_.LastWriteTime).Days -gt 10} | Remove-Item

Das ganze habe ich als Foreach-Schleife geschrieben, die zwei Arrays besitzt, zum einen die versch. Ordner in denen nach den Daten gesucht werden soll, zum anderen
die versch. Teilstrings und Endungen der Daten.
Mein Problem ist, dass wenn ich beide arrays zu einem Verbinde trotzdem alle alten Dateien gelöscht werden, obwohl ich vorgebe, dass ich nur bestimmte gelöscht haben will, die älter als zehn Tage sind.

Kann mir bitte jemand weiterhelfen

Grüße greenhorn101

Content-Key: 159394

Url: https://administrator.de/contentid/159394

Ausgedruckt am: 20.10.2021 um 08:10 Uhr

Mitglied: greenhorn101
greenhorn101 28.01.2011 um 11:56:18 Uhr
Goto Top
Hallo zusammen,

nach langem hin und her habe ich endlich den Sprung geschafft, das Skript so zum laufen zu bringen wie ich das wollte.

Alt:

Get-Childitem -recurse E:\test\$j | Where-Object {($Today-$_.LastWriteTime).Days -gt 10} | Remove-Item

$j stellt das zusammen gesetzte Array dar das aus folgenden Bestand.
$h stellt dabei die jeweiligen Pfade der Ordner da und $i die zu löschenden Dateien
Im alten Befehl habe ich versucht den Pfad und die zu löschenden Dateien in einem Array zusammen zu fassen, was aber nicht den gewünschten Erfolg erzielte.

Neu:

Get-Childitem -recurse E:\test\$h -include $i | Where-Object {($Today-$_.LastWriteTime).Days -gt 10} | Remove-Item

Man muss also darauf achten, dass man das -include nicht ans Ende setzt, nach Remove-item, sondern direkt nach dem Pfad der zu löschenden Dateien, dann werden auch wirklich nur die Dateien gelöscht, die älter als 10 Tage sind und eben die entsprechenden Eigenschaften tragen.
Alle anderen Dateien die älter als 10 Tage sind, und nicht mit einer Eigenschaft von $i übereinstimmen werden nicht gelöscht.

Nun läuft das Skript ohne Probleme!!!
Ich hoffe ich kann dem einen oder anderen damit auch helfen:) face-smile

grüße
greenhorn101
Heiß diskutierte Beiträge
question
Neuinstallation NetzwerkBurQueVor 1 TagFrageNetzwerkgrundlagen14 Kommentare

Hallo ich hab die Aufgabe bekommen ein Netzwerk in einem neuen Gebäude einzurichten bzw. mir dazu Gedanken zu machen. Raumsituation. Im Keller steht ein Serverschrank ...

question
Multi-WAN-Netzwerk fürs StudentenwohnheimHutzeljaegerVor 23 StundenFrageLAN, WAN, Wireless17 Kommentare

Hallo allerseits. Für die Internetversorgung unseres Studentenwohnheims muss ich nun sehen, dass ich eine kostengünstige Lösung eines Multi-WAN Netzwerks hinbekomme, wohl am besten per Multi-WAN-Bonding. ...

question
RDP funktioniert auf 2 Monitoren, nicht aber auf 3spufi77Vor 22 StundenFrageWindows 109 Kommentare

Hallo ich habe meinen Laptop über eine DockingStation USB-C an zwei Monitore angeschlossen. Wenn ich nun eine RDP Verbindung aufbaue, bekomme ich die trotz Haken ...

question
Arbeitsordnern Beine machen? gelöst dertowaVor 19 StundenFrageWindows Netzwerk1 Kommentar

Hallo zusammen, mein HomeLab lässt mich leider noch nicht los. Nachdem ich gestern Abend soweit erfolgreich war und nach einer Test-VM mein Notebook umgestellt habe ...

question
Drei Fragen zum Internet Explorer gelöst UserUWVor 1 TagFrageWebbrowser4 Kommentare

1) Der IE lässt sich unter Windows 10 deaktivieren, aber nicht physisch deinstallieren. Heißt das, dass IE-Funktionalitäten "unter der Haube" auch von Windows 10 genutzt ...

question
PowerEdge T640 Server (ESXi) mit "normalen" SSDs erweitern?ralfiiiVor 22 StundenFrageServer-Hardware6 Kommentare

Ìch habe einen PowerEdge T640 Server. Die von Dell angebotenen Festplatten sind ja absurd teuer (ich nehme mal an spezielle Serverhardware, robust etc), da hab ...

question
Suche ITSM-Software für KMUcell2k6Vor 5 StundenFrageMicrosoft6 Kommentare

Hallo Community, stiller mitleser hier, jetzt muss ich aber mal aktiv werden um die Schwarmintelligenz zu nutzen. Wir sind eine 4-Mann IT-Abteilung in einem mittelständischem ...

question
Windows 10 bzw. 11 braucht ewig für NeustartMazenauerVor 23 StundenFrageWindows 118 Kommentare

Hallo zusammen Ich habe hier ein Problem auf meiner eigenen Kiste welches ich schon lange vor mir herschiebe, da es ja eigentlich nicht so wirklich ...