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!