Alle Dateien älter als 10 Jahre anzeigen lassen (und dann löschen)
Moin zusammen,
hat jemand einen Tipp, wie ich (am besten mit Windows-Boardmitteln) alle Dateien eines Verzeichnisses anzeigen lassen, die älter als z.B. 10 Jahre sind?
Achtung: Es handelt sich um eine Menge kleiner Dateien (ca. 15 TB) !
Ich müsste außerdem wissen, wieviel Speicher diese belegen.
Ziel:
Erst anzeigen lassen, dann (später) die Dateien löschen.
Besten Dank vorab,
jupxids
hat jemand einen Tipp, wie ich (am besten mit Windows-Boardmitteln) alle Dateien eines Verzeichnisses anzeigen lassen, die älter als z.B. 10 Jahre sind?
Achtung: Es handelt sich um eine Menge kleiner Dateien (ca. 15 TB) !
Ich müsste außerdem wissen, wieviel Speicher diese belegen.
Ziel:
Erst anzeigen lassen, dann (später) die Dateien löschen.
Besten Dank vorab,
jupxids
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 52383668430
Url: https://administrator.de/contentid/52383668430
Ausgedruckt am: 24.11.2024 um 02:11 Uhr
12 Kommentare
Neuester Kommentar
Hi,
Powershell ist hier Dein Freund:
Das Skript stammt ursprünglich mal von Rene Albarus......Wir nutzen das zum Aufräumen unseres XChange-Ordners.
Es werden alle Ordner und Unterordner durchsucht.
Benutzung auf eigenes Risiko! Es wird aber nicht vorher angezeigt. Dazu müsstest Du den Löschbefehl mit -whatif erweitern.
Gruß
Looser
Powershell ist hier Dein Freund:
$Source = "C:\zu_untersuchender_Ordner\" # Wichtig: muss mit "\" enden
$Days = 3650 # Anzahl der Tage, nach denen die Dateien geloescht werden
$ext = "*.*","*.log" # Array - erweitern mit ,".xyz"
$log = "$Source$(get-date -format yyyy-mm-dd).txt"
$DateBeforeXDays = (Get-Date).AddDays(-$Days)
# Start Script
start-transcript $log
write-host "--------------------------------------------------------------------------------------"
write-host "Entfernen aller Dateien ($ext) im Ordner $Source die aelter sind als $Days Tage."
write-host "--------------------------------------------------------------------------------------"
# get-childitem $Source\* -include $ext -recurse | where {$_.lastwritetime -lt $DateBeforeXDays -and -not $_.psiscontainer} |% {remove-item $_.fullname -force -verbose}
get-childitem $Source\* -recurse | where {$_.lastwritetime -lt $DateBeforeXDays -and -not $_.psiscontainer} |% {remove-item $_.fullname -force -verbose}
stop-transcript
Das Skript stammt ursprünglich mal von Rene Albarus......Wir nutzen das zum Aufräumen unseres XChange-Ordners.
Es werden alle Ordner und Unterordner durchsucht.
Benutzung auf eigenes Risiko! Es wird aber nicht vorher angezeigt. Dazu müsstest Du den Löschbefehl mit -whatif erweitern.
Gruß
Looser
Powershell wäre ein Onboard-Mittel. Zum Auflisten gesuchter Dateien folgenden Befehl verwenden:
"X" einfach durch die Anzahl der Tage ersetzen. Eine "10" an dieser Stelle gibt nun alle Files aus, welche jünger 10 Tage sind.
Löschen ginge dann wie folgt:
Bitte erst testen, bevor Datenverlust entsteht ;)
Gruß
Get-ChildItem -Recurse | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-X) -and -not $_.PSIsContainer }
"X" einfach durch die Anzahl der Tage ersetzen. Eine "10" an dieser Stelle gibt nun alle Files aus, welche jünger 10 Tage sind.
Löschen ginge dann wie folgt:
Get-ChildItem -Recurse |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-X) -and -not $_.PSIsContainer } |
Remove-Item -Force
Bitte erst testen, bevor Datenverlust entsteht ;)
Gruß
$folder = "E:\Daten"
$olderthandays = 3650
# -----
$d = (Get-Date).AddDays(-$olderthandays)
$files = Get-ChildItem $folder -File -Recurse | ? LastWriteTime -lt $d
if ($files){
$size = ($files | measure length -Sum).Sum
Write-host "$($files.Count) Datei(en) älter als $olderthandays Tage mit Gesamtgröße $('{0:F2}MB' -f ($size/1MB)):`n"
$files.Fullname
If ((Read-Host "Dateien löschen? (J/N)") -match '^j$') {
$files | Remove-Item -Force -verbose
}
}else{
Write-host "Keine alten Dateien gefunden" -F Gray
}
Gruß pp
Kleiner Tippfehler wurde korrigiert.
Sicher, wieso sollte nicht?? ...
RTFM
https://learn.microsoft.com/en-us/dotnet/api/system.datetime.adddays?vie ...
RTFM
https://learn.microsoft.com/en-us/dotnet/api/system.datetime.adddays?vie ...
Du hast vergessen Enter zu drücken, oder den Pfad an das Zielsystem anzupassen . Das zum Thema "Administrator,de" .
Kapitel 1: Erste Schritte mit PowerShell
Kapitel 1: Erste Schritte mit PowerShell
Leider wird er auch direkt ausgeführt
Normal, das bezweckst du ja mit dem Copy n Paste. 🙃Ein Grund warum sowas auch als ganzes aus einer Skript-Datei (*.ps1) ausgeführt wird oder mit einem richtigen Editor wie VS-Code / PS-ISE etc. ...
Copy n Paste is in dem Fall bäh, ... wer weiß was da über remote ankommt ...
*traurig ist es, so unwissend zu sein, glaube er mir ^^ *
Dann lass dir Zeit und komm schreib nicht gleich wegen jede F... hier nen Beitrag. me -> out
Angenommen
D:\Archiv Hier liegen die Daten
D:\Archiv_Older10 Hier ein Temp Ordner wo ältere Daten hinverschoben werden die älter 10 Jahre sind
Robocopy.exe "D:\Archiv" "D:\Archiv_Older10" /S /E /R:1 /W:1 /MINAGE:3650 /MOV /NP
Mit dem Befehl unter DOS verschiebt er alles was älter 10 jahre (MINAGE:3650 das sind Tage) ist.
Wenns dir nicht passt gehst in den TEMP Ordner rein und schneidest alles aus und fügst es wieder ein in den Original Archiv Ordner.
Und wenn du das per Script komplett mit löschen machen willst:
Bedeutet er erstellt erstmal den TEMP Ordner, verschiebt und löscht dann den Temp Ordner samt Inhalt.
D:\Archiv Hier liegen die Daten
D:\Archiv_Older10 Hier ein Temp Ordner wo ältere Daten hinverschoben werden die älter 10 Jahre sind
Robocopy.exe "D:\Archiv" "D:\Archiv_Older10" /S /E /R:1 /W:1 /MINAGE:3650 /MOV /NP
Mit dem Befehl unter DOS verschiebt er alles was älter 10 jahre (MINAGE:3650 das sind Tage) ist.
Wenns dir nicht passt gehst in den TEMP Ordner rein und schneidest alles aus und fügst es wieder ein in den Original Archiv Ordner.
Und wenn du das per Script komplett mit löschen machen willst:
md "D:\Archiv_Older10"
Robocopy.exe "D:\Archiv" "D:\Archiv_Older10" /S /E /R:1 /W:1 /MINAGE:3650 /MOV /NP
rd "D:\Archiv_Older10" /S /Q
Bedeutet er erstellt erstmal den TEMP Ordner, verschiebt und löscht dann den Temp Ordner samt Inhalt.