Ok, mir war ein bisschen langweilig und ich habe mir das hier ausgedacht, das meine Version eines Linux-Epochen-Ersatzes für arme Leute enthält, der auf den täglichen Gebrauch beschränkt ist (keine Zeitspeicherung):
7TageReinigen.cmd
@echo off
setlocal ENABLEDELAYEDEXPANSION
set day=86400
set /a year=day*365
set /a strip=day*7
set dSource=C:\temp
call :epoch %date%
set /a slice=epoch-strip
for /f "delims=" %%f in ('dir /a-d-h-s /b /s %dSource%') do (
call :epoch %%~tf
if !epoch! LEQ %slice% (echo DELETE %%f ^(%%~tf^)) ELSE echo keep %%f ^(%%~tf^)
)
exit /b 0
rem Args[1]: Year-Month-Day
:epoch
setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=1,2,3 delims=-" %%d in ('echo %1') do set Years=%%d& set Months=%%e& set Days=%%f
if "!Months:~0,1!"=="0" set Months=!Months:~1,1!
if "!Days:~0,1!"=="0" set Days=!Days:~1,1!
set /a Days=Days*day
set /a _months=0
set i=1&& for %%m in (31 28 31 30 31 30 31 31 30 31 30 31) do if !i! LSS !Months! (set /a _months=!_months! + %%m*day&& set /a i+=1)
set /a Months=!_months!
set /a Years=(Years-1970)*year
set /a Epoch=Years+Months+Days
endlocal& set Epoch=%Epoch%
exit /b 0
ANWENDUNG
set /a strip=day*7
: Ändern Sie 7 für die Anzahl der zu bewahrenden Tage.
set dSource=C:\temp
: Dies ist das Startverzeichnis, in dem nach Dateien gesucht wird.
ANMERKUNGEN
Dies ist ein nicht-destruktiver Code, der anzeigt, was passiert wäre.
Ändern:
if !epoch! LEQ %slice% (echo DELETE %%f ^(%%~tf^)) ELSE echo keep %%f ^(%%~tf^)
auf etwas wie :
if !epoch! LEQ %slice% del /f %%f
damit Dateien tatsächlich gelöscht werden
Februar : ist fest auf 28 Tage programmiert. Bissextile Jahre ist eine Hölle hinzuzufügen, wirklich. Wenn jemand eine Idee hat, die nicht 10 Zeilen Code hinzufügen würde, gehen Sie vor und posten, so dass ich es zu meinem Code hinzufügen.
Epoche : Ich habe die Zeit nicht berücksichtigt, da es darum geht, Dateien zu löschen, die älter als ein bestimmtes Datum sind. Wenn ich Stunden/Minuten genommen hätte, wären Dateien von einem Tag gelöscht worden, der zur Aufbewahrung gedacht war.
BESCHRÄNKUNG
Epoche geht davon aus, dass Ihr kurzes Datumsformat JJJJ-MM-TT ist. Es müsste für andere Einstellungen oder eine Laufzeitauswertung angepasst werden (sShortTime lesen, benutzergebundene Konfiguration, richtige Feldreihenfolge in einem Filter konfigurieren und den Filter verwenden, um die richtigen Daten aus dem Argument zu extrahieren).
Habe ich schon erwähnt, dass ich die automatische Formatierung dieses Editors hasse? Sie entfernt die Leerzeilen und das Einfügen ist eine Hölle.
Ich hoffe, das hilft.
8 Stimmen
Jeff Atwood hat diese Frage auf Serverfault beantwortet, und ich denke, sie sollte hier dokumentiert werden. serverfault.com/questions/49614/delete-files-older-than-x-days
0 Stimmen
Eine neue Methode, die auf einer .BAT-Datei basiert und nur interne CMD.EXE-Befehle verwendet, wurde hier veröffentlicht: stackoverflow.com/questions/9746778/
1 Stimmen
gehrcke.de/zeitluecken wurde zu diesem Zweck entwickelt. Es ermöglicht sogar ein ausgeklügeltes Löschschema: Zusätzlich zur Aufbewahrung der Dateien der letzten 7 Tage kann z. B. auch jeweils eine Datei für die letzten 8 Wochen, 12 Monate und 2 Jahre aufbewahrt werden.