Script: Löschen von Dateien älter als x -Tage, wie SQL Backups, etc.

forfiles /p "D:\SQL-Backup" /s /m *.* /D -10 /C "cmd /c del @path"

Das forfiles-Kommando, das du angegeben hast, löscht nur Dateien und nicht die Ordner selbst. Die Funktionalität des Scripts ist wie folgt:

  • /p "D:\SQL-Backup": Gibt den Pfad an, in dem nach Dateien gesucht wird.
  • /s: Durchsucht auch alle Unterordner rekursiv.
  • /m *.*: Bezieht sich auf alle Dateien (unabhängig von ihrem Dateityp).
  • /D -10: Wählt Dateien aus, die älter als 10 Tage sind.
  • /C "cmd /c del @path": Führt den del-Befehl aus, um die ausgewählten Dateien zu löschen.

Was passiert genau?

  • Dateien in den Unterordnern (z.B. in D:\SQL-Backup\SFirm4_1 und D:\SQL-Backup\SFirm4_2), die älter als 10 Tage sind, werden gelöscht.
  • Die Ordner selbst bleiben unberührt, weil der del-Befehl nur Dateien löscht und keine Ordner.

Das bedeutet, dass die Ordner, in denen sich die Dateien befinden, erhalten bleiben, selbst wenn alle Dateien darin gelöscht werden.

Was, wenn du auch leere Ordner löschen möchtest?

Wenn du zusätzlich die leeren Ordner nach dem Löschen der Dateien entfernen möchtest, kannst du ein weiteres Skript oder Kommando hinzufügen, um leere Ordner zu löschen. Hier ein Beispiel, wie du leere Ordner entfernen könntest:

forfiles /p "D:\SQL-Backup" /s /m *.* /D -10 /C "cmd /c del @path"
for /d %d in (D:\SQL-Backup\*) do rd /s /q "%d"

Dieser zusätzliche Befehl (for /d %d in ... rd /s /q "%d") würde alle leeren Unterordner entfernen, nachdem die Dateien gelöscht wurden.

Aber um deine Frage zu beantworten: Nein, die Ordner werden nicht gelöscht, nur die Dateien, die älter als 10 Tage sind.

Lasse gerne ein Kommentar da, vielleicht hilft es auch anderen Usern?

WiKi.Premium-Lizenz.com
Logo
Jetzt registrieren