fekc2014
Goto Top

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.

Content-Key: 241013

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

Printed on: April 23, 2024 at 07:04 o'clock

Member: colinardo
Solution colinardo Jun 16, 2014, updated at Sep 01, 2014 at 14:20:32 (UTC)
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
Member: FEKC2014
FEKC2014 Jun 16, 2014 at 13:56:27 (UTC)
Goto Top
Ja, ist zwar sehr schön, allerdings scheint dein Script aber nicht seine Daten aus dem Dateinamen zu holen.
Member: colinardo
colinardo Jun 16, 2014 updated at 14:34:03 (UTC)
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