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
- /p "Laufwerk:\Ordner" — mit /p wird der zu durchsuchende Pfad angegeben.
- /s — Das mit /p angegebene Verzeichnis wird rekursiv durchsucht.
- /m *.* — Das Verzeichnis wird mit der angegebenen Suchmaske (*.*) durchsucht.
- /d -7 — Der Befehl wird auf alle Dateien angewendet, die älter als 7 Tage sind.
- /c "cmd /c del @path" — Auszuführender Befehl für Dateien die den Kriterien entsprechen. Hier werden die Dateien "@path" mit dem Befehl "del" gelöscht.
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:
- Windows Server 2003 / 2008 / 2012 / 2016
- Windows Vista
- Windows 7
- Windows 8
- Windows 10
Weitere Informationen zum Befehl "forfiles" bzw. "pushd / popd" finden Sie bei Microsoft.