Logo

Kommandozeile - Löschen von Dateien

Dateien älter als X Tage löschen

Unter gewissen Umständen kann es notwendig sein, dass in einem bestimmten Verzeichnis Dateien mit einem gewissen Alter gelöscht werden müssen. Zum Beispiel wenn täglich ein Backup in ein Verzeichnis ausgeführt wird, die erstellende Software jedoch keine Bereinigung im Zielverzeichnis durchführt. Diese Bereinigung lässt sich z.B. durch den folgenden Befehl durchführen:

forfiles /p "Laufwerk:\Ordner" /s /m *.* /d -7 /c "cmd /c del @path"

Mit diesem Beispiel werden alle Dateien die älter als 7 Tage sind aus dem Verzeichnis "Laufwerk:\Ordner" gelöscht.

Erklärung der verwendeten Parameter

Verwendung von UNC-Pfaden

Der Befehl forfiles unterstützt keine direkte Verwendung von UNC-Pfaden. Um den Befehl dennoch auf einen UNC-Pfad anzuwenden, muss dieser zuvor als Netzlaufwerk verbunden werden (net use), oder der Befehl wird angepasst zur dynamischen Zuweisung von Laufwerken für UNC-Pfade:

pushd "\\Server\Freigabe" && (forfiles /s /m *.* /d -7 /c "cmd /c del @path") & popd

Erklärung der verwendeten Befehle

Im Gegensatz zum vorherigen Verwendung von forfiles wird der Parameter /p entfernt, da der Befehl pushd das Arbeitsverzeichnis (working directory) für forfiles vorgibt. Die übrigen Parameter bleiben bestehen.

pushd erstellt zur Laufzeit aus dem UNC-Pfad ein Laufwerk (mapping) und verwendet dafür den höchsten verfügbaren Laufwerksbuchstaben (beginnend beim Buchstaben Z:\).

Durch die abschließende Verwendung vom Befehl popd wird das zuvor von pushd erstellte Laufwerk wieder getrennt.

Die 3 Befehle (pushd / forfiles / popd) werden trotz einzeiliger Schreibweise nacheinander ausgeführt, da Sie durch das & miteinander verbunden sind. Bei der Verwendung von && bei pushd wird der darauf folgende Befehl (forfiles) nur dann ausgeführt, wenn der erste Befehl (pushd) erfolgreich beendet wurde.
Somit wird verhindert, dass z.B. bei einem fehlgeschlagenen Mapping durch pushd der Befehl forfiles ausgeführt wird. Das kann im schlimmsten Fall dazu führen, dass Dateien statt im eigentlich gewünschten Verzeichnis im aktuellen Arbeitsverzeichnis des Scripts gelöscht werden.

Weitere Informationen

Die Befehle "forfiles" / "pushd" / "popd" sind über die Kommandozeile in den folgenden Betriebssystemen verfügbar:

Weitere Informationen zum Befehl "forfiles" bzw. "pushd / popd" finden Sie bei Microsoft.