Ich habe eine geplante Aufgabe / ein geplantes Skript, das alle 3 Stunden einen Schnappschuss einer Datei erstellt, aber die Datei wächst und der Speicherplatz ist begrenzt. Daher möchte ich jede Woche eine Bereinigung durchführen.
Was jetzt mache ich das manuell, aber ich hoffe, dass diese Aufgabe automatisiert werden kann?
Was ich genau will, ich habe ein Verzeichnis, das folgendes enthält:
B:\>dir
Volume in drive B is BACKUP
Volume Serial Number is ****-****
Directory of B:\
2015-03-04 13:04 <DIR> MEMORYCRASHDUMPS
2015-03-02 23:59 20 484 150 [20150302235959.082]-Logs.rar
2015-03-03 00:00 <DIR> Logs
2015-03-01 17:59 67 365 888 [20150301180000.085]-users.sqlite3
2015-03-01 22:50 67 480 576 [20150301230000.368]-users.sqlite3
2015-03-02 00:32 67 480 576 [20150302030000.378]-users.sqlite3
2015-03-02 06:22 67 503 104 [20150302080000.352]-users.sqlite3
2015-03-02 12:59 67 605 504 [20150302130000.084]-users.sqlite3
2015-03-02 17:59 67 740 672 [20150302180000.090]-users.sqlite3
2015-03-02 22:59 67 921 920 [20150302230000.418]-users.sqlite3
2015-03-03 02:58 67 960 832 [20150303030000.088]-users.sqlite3
2015-03-03 07:53 67 966 976 [20150303080000.456]-users.sqlite3
2015-03-03 12:59 68 013 056 [20150303130000.082]-users.sqlite3
2015-03-03 17:59 68 153 344 [20150303180000.081]-users.sqlite3
2015-03-03 22:54 68 339 712 [20150303230000.352]-users.sqlite3
2015-03-04 01:40 68 350 976 [20150304030000.090]-users.sqlite3
2015-03-04 07:51 68 367 360 [20150304080000.358]-users.sqlite3
2015-03-04 12:53 68 452 352 [20150304130000.085]-users.sqlite3
2015-03-04 17:58 68 718 592 [20150304180000.083]-users.sqlite3
Ich möchte alle löschen ./*-users.sqlite3
, mit Ausnahme der neuesten (Bonus: Mit Ausnahme der N neuesten).
Gibt es dafür einen praktischen Windows-Befehl?
Ich habe bereits einige Fragen geprüft, obwohl sie nur das Löschen von Dateien nach Datum / Alter oder Mustern behandeln. Sie bieten jedoch keine Möglichkeit, das neueste Element auszuschließen (nur einen bestimmten Dateinamen).
quelle
Antworten:
Ganz einfach: Verarbeiten Sie eine Verzeichnisliste nach Datum absteigend mit FOR / F und überspringen Sie die ersten N Zeilen. Ihre Dateinamen enthalten bereits einen Zeitstempel, der ordnungsgemäß chronologisch sortiert ist, sodass Sie nach Namen sortieren können.
Im Folgenden werden die 3 neuesten Dateien beibehalten. Ändern Sie einfach den Wert für SKIP nach Bedarf.
Sie können das Obige in ein Stapelskript einfügen und den Skip-Wert parametrisieren.
purgeLog.bat
Um die 2 neuesten Protokolle beizubehalten, verwenden Sie:
quelle