fekc2014

Suche nach Möglichkeit ein Datum aus dem Dateinamen auszulesen und Dateien älter 30 Tage zu löschen.

Hallo,
ich suche nach einer Möglichkeit Backups nach 30 Tagen mithilfe eines Datums aus dem Dateinamen zu löschen.
Am besten per Batch oder Powershell Script.
Die Syntax der Dateien ist wie in folgenden Beispiel:

lw_buchhalt_backup_01.06.2014_20_18.zip

Würde mich sehr über eine Antwort freuen, weil ich diese für ein Kundenprojekt brauche.
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 241013

Url: https://administrator.de/forum/suche-nach-moeglichkeit-ein-datum-aus-dem-dateinamen-auszulesen-und-dateien-aelter-30-tage-zu-loeschen-241013.html

Ausgedruckt am: 17.05.2025 um 05:05 Uhr

colinardo
Lösung colinardo 16.06.2014, aktualisiert am 01.09.2014 um 16:20:32 Uhr
Goto Top
Hallo FEKC2014, Willkommen auf Administrator.de.
Die Suchfunktion liefert dazu diverse Treffer:



Da du hier neu bist, ausnahmsweise nochmal face-wink eine schnelle Lösung mit Powershell:
gci "C:\backup\*.zip" | ?{$_.LastWriteTime -lt (Get-date).AddDays(-30)} | Remove-Item -Force
Grüße Uwe
FEKC2014
FEKC2014 16.06.2014 um 15:56:27 Uhr
Goto Top
Ja, ist zwar sehr schön, allerdings scheint dein Script aber nicht seine Daten aus dem Dateinamen zu holen.
colinardo
colinardo 16.06.2014 aktualisiert um 16:34:03 Uhr
Goto Top
Zitat von @FEKC2014:

Ja, ist zwar sehr schön, allerdings scheint dein Script aber nicht seine Daten aus dem Dateinamen zu holen.
ach so, sorry, hatte ich glatt überlesen, ist aber auch kein Problem:
gci "C:\backup\*.zip" | ?{(get-date ([regex]"\d{2}\.\d{2}\.\d{4}").Match($_.BaseName).Value) -lt (Get-date).AddDays(-30)} | Remove-Item -Force
oder einfacher mit Split() so
gci "C:\backup\*.zip" | ?{(get-date ($_.BaseName.Split("_")[3])) -lt (Get-date).AddDays(-30)} | Remove-Item -Force
soll es ganz genau sein und die Zeit zusätzlich mit einbezogen werden, dann so:
gci "C:\backup\*.zip" | ?{(get-date $($s = $_.BaseName.Split("_"); $s[3]+" "+$s[4]+":"+$s[5])) -lt (get-date).AddDays(-30)} | Remove-Item -Force
Grüße Uwe