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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
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
8 Kommentare
Neuester Kommentar

@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.

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!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...
Und zwar macht das genau dieser Teil des Skripts
?{$_.CreationTime.DayOfWeek -ne 0}

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.dann wird das nicht gemacht. es werden alle dateien bis auf die letzten 30 gelöscht.
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):
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)
Also, wie schon gesagt, works as designed!
Wenn's das dann war bitte noch den Thread schließen.

Na dann bitte auch den Beitrag und Lösungen entsprechend als gelöst markieren nicht vergessen. Danke.