Ich schreibe einen einfachen .bat Backup-Skript, und als Teil davon mag ich die älteste Backup (Ordner) löschen bei Erreichen ein eingestellten max Limits von Backups gelöscht werden.Batch Script älteste Ordner in einem bestimmten Ordner
Im Moment habe ich dies:
%COUNTER%
basiert auf der Anzahl der Backup-Ordner zur Zeit in dem Verzeichnis, in dem Sicherungen gespeichert sind, und wird früher im Skript berechnet.
%MAXBACKUPS%
ist nur eine benutzerdefinierte Nummer wie "10", um zu sagen, dass Sie nur bis zu 10 Versionen der Sicherungen beibehalten möchten.
:: Delete the oldest backup, but only if we've exceeded the desired number of backups.
IF %COUNTER% gtr %MAXBACKUPS% (
ECHO More than %MAXBACKUPS% backups exist. Deleting oldest...
FOR /f "delims=" %%a in ('dir "..\Backup\*" /t:c /a:d /o:-d /b') do rd /s /q "..\Backup\%%a"
::Increment the counter down since we've just removed a backup folder.
SET /a COUNTER=%COUNTER%-1
)
würde ich dieses Skript möchte nur den einen ältesten Ordner im ..\Backup
Ordner löschen, aber wie es scheint, steht es jedem einzelnen Ordner zu löschen, es findet, sobald sie die Sicherungsgrenze erreicht, was natürlich nicht der ist erwünscht Verhalten.
gut, löscht das Skript jeden einzelnen Ordner, weil Sie eine Schleife da drin haben, die für jeden Ordner 'rd' aufruft. Das macht der 'for' Befehl. Warum hast du es so geschrieben? – HugoRune
Ich dachte, ich müsste alle Ordner korrekt nach Datum sortieren, aber jetzt, wo ich darüber nachdenke, ist das wahrscheinlich nicht der Fall. – Ectropy
Wie sich herausstellt, ist es so, aber die Art und Weise, wie ich es ursprünglich gemacht habe, war ein bisschen aus. – Ectropy