Ältestes Verzeichnis per Batch finden
Vorweg:
Ich habe ein Script geschrieben, welches eine Backupdatei in ein Unterverzeichnis verschiebt. Jetzt prüfe ich, wie groß die verschobeneSicherung war, rechne eine Sicherheit von 50% oben drauf und vergleiche das mit dem aktuell freien Speicher auf dem Laufwerk. Wenn der restliche Speicherplatz kleiner ist als die errechnete Sicherheit, dann komme ich zu dem unten abgebildeten Teil. Hier soll später einmal die älteste Sicherung gelöscht werden.
Ich habe Verzeichnisse im Format \Backup_JJJJMMTT erstellt.
Mein Problem ist jetzt, das er das set vergleich=%%i nur am ende des FOR wirklich ausführt.
Die Ausgabe des Script ist folgende:
Zu wenig freier Speicher, loesche aelteste Tagessicherung
20090303 ist lss #kleiner als# 9999999999999
Habe Vergleich auf 9999999999999 gesetzt #Sollte 20090303 sein#
20090304 ist lss #kleiner als# 9999999999999
Habe Vergleich auf 9999999999999 gesetzt #Sollte 20090304 sein#
20090305 ist lss #kleiner als# 9999999999999
Habe Vergleich auf 9999999999999 gesetzt #Sollte 20090305 sein#
Ich wuerde 20090305 loeschen.
Press any key to continue . . .
Bei folgender Verzeichnisstruktur....
03.03.2009 11:53 <DIR> Backup_20090303
03.03.2009 11:41 <DIR> Backup_20090304
03.03.2009 11:41 <DIR> Backup_20090305
Bitte um kundige Hilfe, ich werde hier wahnsinnig....
Ich habe ein Script geschrieben, welches eine Backupdatei in ein Unterverzeichnis verschiebt. Jetzt prüfe ich, wie groß die verschobeneSicherung war, rechne eine Sicherheit von 50% oben drauf und vergleiche das mit dem aktuell freien Speicher auf dem Laufwerk. Wenn der restliche Speicherplatz kleiner ist als die errechnete Sicherheit, dann komme ich zu dem unten abgebildeten Teil. Hier soll später einmal die älteste Sicherung gelöscht werden.
Ich habe Verzeichnisse im Format \Backup_JJJJMMTT erstellt.
:VOLL
echo Zu wenig freier Speicher, loesche aelteste Tagessicherung
set vergleich=9999999999999
FOR /F "tokens=2 delims=_" %%i in ('dir %LW% /-c') do IF "%%i" lss "%vergleich%" (
echo %%i ist lss #kleiner als# %vergleich%
set vergleich=%%i
echo Habe Vergleich auf %vergleich% gesetzt #Sollte %%i sein#)
echo Ich wuerde %vergleich% loeschen.
pause
GOTO :SPACE
Mein Problem ist jetzt, das er das set vergleich=%%i nur am ende des FOR wirklich ausführt.
Die Ausgabe des Script ist folgende:
Zu wenig freier Speicher, loesche aelteste Tagessicherung
20090303 ist lss #kleiner als# 9999999999999
Habe Vergleich auf 9999999999999 gesetzt #Sollte 20090303 sein#
20090304 ist lss #kleiner als# 9999999999999
Habe Vergleich auf 9999999999999 gesetzt #Sollte 20090304 sein#
20090305 ist lss #kleiner als# 9999999999999
Habe Vergleich auf 9999999999999 gesetzt #Sollte 20090305 sein#
Ich wuerde 20090305 loeschen.
Press any key to continue . . .
Bei folgender Verzeichnisstruktur....
03.03.2009 11:53 <DIR> Backup_20090303
03.03.2009 11:41 <DIR> Backup_20090304
03.03.2009 11:41 <DIR> Backup_20090305
Bitte um kundige Hilfe, ich werde hier wahnsinnig....
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 110425
Url: https://administrator.de/forum/aeltestes-verzeichnis-per-batch-finden-110425.html
Ausgedruckt am: 23.05.2025 um 15:05 Uhr
2 Kommentare
Neuester Kommentar
Hallo Boulder und willkommen im Forum!
Da Du eine durchgängige Namenskonvention hast, ist ein Zerlegen und Vergleichen gar nicht nötig - einfach nach Namen (absteigend) sortieren und den letzten Verzeichnisnamen verwenden:
Grüße
bastla
Da Du eine durchgängige Namenskonvention hast, ist ein Zerlegen und Vergleichen gar nicht nötig - einfach nach Namen (absteigend) sortieren und den letzten Verzeichnisnamen verwenden:
for /f %%i in ('dir D:\Backup_* /b /o-n /ad') do set "Aeltestes=%%i"
bastla