xelage

Batch Script für Backup Dateien ausser Sonntag und letzte 30 Files

Hallo zusammen,

eine SQL Datenbank erstellt jede Nacht um 2:00 Uhr ein Backupfile (Beispielort: D:\Backup.SQL\*.*). Aus Platzgründen würde ich nun gerne ein Batchfile ausführen, welches nur die letzten 30 Files und falls älter nur jeweils Sonntag behält. Ich habe beides einzeln gefunden, aber wie kombiniere ich diese?

besten Dank für eure Antworten!

gruss xelage
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 665942

Url: https://administrator.de/forum/batch-script-fuer-backup-dateien-ausser-sonntag-und-letzte-30-files-665942.html

Ausgedruckt am: 04.05.2025 um 09:05 Uhr

148121
Lösung 148121 20.04.2021 aktualisiert um 15:13:39 Uhr
Goto Top
@echo off
powershell -EP Bypass -C "ls 'D:\Backup.SQL' -File | sort CreationTime -Descending | select -Skip 30 | ?{$_.CreationTime.DayOfWeek -ne 0} | rm -Force"  

Gruß w.
xelage
xelage 21.04.2021 um 16:37:01 Uhr
Goto Top
ok ich probiere es aus und gib bescheid. danke.
xelage
xelage 03.05.2021 um 14:39:09 Uhr
Goto Top
hmm es werden alle dateien bis auf die letzen 30 gelöscht, meine anfrage ist dann aber noch nicht komplett, es fehlt noch was älter als 30 tage ist noch jeden sonntag oder von mir aus auch einmal pro woche...
148121
148121 03.05.2021 aktualisiert um 15:49:50 Uhr
Goto Top
Zitat von @xelage:

hmm es werden alle dateien bis auf die letzen 30 gelöscht, meine anfrage ist dann aber noch nicht komplett, es fehlt noch was älter als 30 tage ist noch jeden sonntag oder von mir aus auch einmal pro woche...
Nein das kann schon aus Prinzip nichts sein, denn es ist ebenfalls schon im Skript berücksichtigt!
Und zwar macht das genau dieser Teil des Skripts

?{$_.CreationTime.DayOfWeek -ne 0} 
Dieser prüft ob die Datei an des Erstelldatums nicht an einem Sonntag erstellt wurde und löscht eben nur diese! Works as designed!
xelage
xelage 03.05.2021 um 15:50:28 Uhr
Goto Top
dann wird das nicht gemacht. es werden alle dateien bis auf die letzten 30 gelöscht.
148121
148121 03.05.2021 aktualisiert um 16:06:40 Uhr
Goto Top
Zitat von @xelage:

dann wird das nicht gemacht. es werden alle dateien bis auf die letzten 30 gelöscht.
Doch funktioniert hier ja einwandfrei! Du hast da wohl entweder einen Interpretationsfehler oder deine Dateien haben das falsche Erstelldatum.
Wenn du stattdessen das Änderungsdatum berücksichtigen willst musst du LastWriteTime nehmen!!
Kann ich dir gerne zeigen wenn du mir nicht glaubst ...

Hier das Testverzeichnis (für das Beispiel nur 3 Dateien und der Abschnitt mit den 30 auslassen weggelassen):

screenshot

Wie du siehst löscht er alle außer die FIles die an einem Sonntag geändert wurden (Hab hier für das Beispiel das Änderungsdatum statt dem Erstelldatum genommen)

screenshot

Also, wie schon gesagt, works as designed!

Wenn's das dann war bitte noch den Thread schließen.
xelage
xelage 05.05.2021 um 11:35:46 Uhr
Goto Top
natürlich hattest du recht, ich hatte eine kopie der scharfen daten gemacht und da war das erstellerdatum natürlich das heutige. mit LastWriteTime hat es dann wie gewünscht mit den kopiedaten funktioniert face-smile
works as designed! face-smile

danke nochmals!
148121
148121 05.05.2021 aktualisiert um 11:44:17 Uhr
Goto Top
Na dann bitte auch den Beitrag und Lösungen entsprechend als gelöst markieren nicht vergessen. Danke.