Dieser Beitrag zeigt, wie Verzeichnisse, die älter als n Tage sind, per Windows Batch gelöscht werden können.

Gerade wenn Verzeichnisse und Dateien automatisiert werden, sammelt sich in kürzester Zeit ein sehr großer Datenhaufen an. In den meisten Fällen können viele dieser Daten nach einer bestimmten Zeit wieder gelöscht werden. Da bietet es sich an, dies ebenfalls zu automatisieren. Eine Realisierung kann sehr einfach per Windows Batch durchgeführt werden. Hierfür gibt es eine einfache Möglichkeit: FORFILES.

Zur Veranschaulichung ein Beispiel:

pushd D:\drop\Nightly
FORFILES /m dir0815*.* /D -5 /C "cmd /c IF @isdir == TRUE rd /S /Q @path"
popd

IF %ERRORLEVEL% LSS 2 goto finish
EXIT /B %ERRORLEVEL%

:finish
EXIT /B 0

Was passiert hier? Zuerst wird das Arbeitsverzeichnis gesetzt, danach werden mittels FORFILES alle Dateien nach dem Pattern (siehe /m) ermittelt, die älter als 5 Tage (siehe /D -5) sind und an das via /C angegebene Command übergeben.

Anschließend wird das Arbeitsverzeichnis zurückgesetzt und die Errorlevel geprüft. FORFILES gibt einen Errorlevel von 0 zurück wenn Dateien gefunden und verarbeitet wurden. 1 wird zurückgeliefert, wenn keine Dateien für das angegebene Muster bzw. für den Zeitraum zu finden sind. Nachdem ich dies in einem Buildsystem verwende, möchte ich auch in diesem Fall, dass mein Build als fehlerfrei markiert wird. Wird ein anderer Errorlevel als 0 oder 1 gefunden, muss natürlich abgebrochen werden.

Viel Spaß beim anwenden!

Über den Autor

Norbert Eder

Ich bin ein leidenschaftlicher Softwareentwickler und Fotograf. Mein Wissen und meine Gedanken teile ich nicht nur hier im Blog, sondern auch in Fachartikeln und Büchern.

Hinterlasse einen Kommentar