Batch - Nur die neuesten x Dateien eines Ordner behalten
Hallo!
Ich bin neu hier und wende mich mit der Bitte um Hilfe an jene, die sich mit der Batch-Programmierung besser auskennen als ich, denn ich tüftle schon mehre Tage vergeblich an folgendem Problem:
Im Ordner D:\Sicherung stehen z.B. folgende Dateien, deren Namenspräfix das Datum und die Uhrzeit der Speicherung der Dateien zeigt:
202309201851Bookmarks
202309201851Bookmarks.bak
202309201852Bookmarks
202309201852Bookmarks.bak
202309201855Bookmarks
202309201855Bookmarks.bak
202309201856Bookmarks
202309201856Bookmarks.bak
202309201903Bookmarks
202309201903Bookmarks.bak
202309201904Bookmarks
202309201904Bookmarks.bak
202309202127Bookmarks
202309202127Bookmarks.bak
202309210630Bookmarks
202309210630Bookmarks.bak
202309211211Bookmarks
202309211211Bookmarks.bak
202309211213Bookmarks
202309211213Bookmarks.bak
202309211304Bookmarks
202309211304Bookmarks.bak
202309211657Bookmarks
202309211657Bookmarks.bak
202309211705Bookmarks
202309211705Bookmarks.bak
202309211759Bookmarks
202309211759Bookmarks.bak
202309211800Bookmarks
202309211800Bookmarks.bak
202309211801Bookmarks
202309211801Bookmarks.bak
202309211802Bookmarks
202309211802Bookmarks.bak
Es kommen zu unregelmäßigen Zeiten immer wieder neue Dateien hinzu.
Mein Wunsch ist, mit einem BATCH-Programm bei jedem Batch-Programmlauf (z.B.) nur die 10 Dateien mit dem größten Präfix-Wert zu behalten und alle anderen zu löschen. Bei obigem Beispiel möchte ich nur diese Dateien behalten:
202309211705Bookmarks
202309211705Bookmarks.bak
202309211759Bookmarks
202309211759Bookmarks.bak
202309211800Bookmarks
202309211800Bookmarks.bak
202309211801Bookmarks
202309211801Bookmarks.bak
202309211802Bookmarks
202309211802Bookmarks.bak
während die anderen - ohne Rückfragen - gelöscht werden sollen. Durch jeden Batch-Programmlauf soll dieser Bereinigungsvorgang ausgeführt werden, sodass immer die 10 Dateien mit dem jüngsten Präfix im Ordner D:\Sicherung übrig sind.
Ich habe mich nun mehrere Tage mit allen möglichen Schleifen etc. geplagt und keine Lösung gefunden.
Vielleicht hat jemand ein Lösung, über die ich mich sehr freuen würde. Es müsste aber eine BATCH-Lösung sein!!!
Vielen Dank!!!
Ich bin neu hier und wende mich mit der Bitte um Hilfe an jene, die sich mit der Batch-Programmierung besser auskennen als ich, denn ich tüftle schon mehre Tage vergeblich an folgendem Problem:
Im Ordner D:\Sicherung stehen z.B. folgende Dateien, deren Namenspräfix das Datum und die Uhrzeit der Speicherung der Dateien zeigt:
202309201851Bookmarks
202309201851Bookmarks.bak
202309201852Bookmarks
202309201852Bookmarks.bak
202309201855Bookmarks
202309201855Bookmarks.bak
202309201856Bookmarks
202309201856Bookmarks.bak
202309201903Bookmarks
202309201903Bookmarks.bak
202309201904Bookmarks
202309201904Bookmarks.bak
202309202127Bookmarks
202309202127Bookmarks.bak
202309210630Bookmarks
202309210630Bookmarks.bak
202309211211Bookmarks
202309211211Bookmarks.bak
202309211213Bookmarks
202309211213Bookmarks.bak
202309211304Bookmarks
202309211304Bookmarks.bak
202309211657Bookmarks
202309211657Bookmarks.bak
202309211705Bookmarks
202309211705Bookmarks.bak
202309211759Bookmarks
202309211759Bookmarks.bak
202309211800Bookmarks
202309211800Bookmarks.bak
202309211801Bookmarks
202309211801Bookmarks.bak
202309211802Bookmarks
202309211802Bookmarks.bak
Es kommen zu unregelmäßigen Zeiten immer wieder neue Dateien hinzu.
Mein Wunsch ist, mit einem BATCH-Programm bei jedem Batch-Programmlauf (z.B.) nur die 10 Dateien mit dem größten Präfix-Wert zu behalten und alle anderen zu löschen. Bei obigem Beispiel möchte ich nur diese Dateien behalten:
202309211705Bookmarks
202309211705Bookmarks.bak
202309211759Bookmarks
202309211759Bookmarks.bak
202309211800Bookmarks
202309211800Bookmarks.bak
202309211801Bookmarks
202309211801Bookmarks.bak
202309211802Bookmarks
202309211802Bookmarks.bak
während die anderen - ohne Rückfragen - gelöscht werden sollen. Durch jeden Batch-Programmlauf soll dieser Bereinigungsvorgang ausgeführt werden, sodass immer die 10 Dateien mit dem jüngsten Präfix im Ordner D:\Sicherung übrig sind.
Ich habe mich nun mehrere Tage mit allen möglichen Schleifen etc. geplagt und keine Lösung gefunden.
Vielleicht hat jemand ein Lösung, über die ich mich sehr freuen würde. Es müsste aber eine BATCH-Lösung sein!!!
Vielen Dank!!!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 81990426401
Url: https://administrator.de/forum/batch-nur-die-neuesten-x-dateien-eines-ordner-behalten-81990426401.html
Ausgedruckt am: 20.04.2025 um 18:04 Uhr
11 Kommentare
Neuester Kommentar
Hallo,
Darfs auch Powershell sein?
Gruß,
Peter
Darfs auch Powershell sein?
Gruß,
Peter

Moin.
Mal wieder ein echt kreativer Titel bei dem man direkt sieht worum es geht 🤔
Batch
PowerShell
Sid.
Mal wieder ein echt kreativer Titel bei dem man direkt sieht worum es geht 🤔
Batch
@echo off
set "folder=D:\Sicherung"
for /f "skip=10 delims=" %%a in ('dir /b /a-d /o-n "%folder%"') do del "%folder%\%%a"
Get-ChildItem "D:\Sicherung" -File | sort Basename -Descending | select -skip 10 | remove-item -Force -verbose

Zitat von @OldBoy:
Ich habe den Code auch in der Eingabeaufforderung getestet und folgende Fehlermeldung bekommen und danach die Blockade der Commandzeile:
"%%a" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
Ich habe den Code auch in der Eingabeaufforderung getestet und folgende Fehlermeldung bekommen und danach die Blockade der Commandzeile:
"%%a" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
Doch der funktioniert einwandfrei du musst das aber in einer Batchdatei ausführen nicht in einer Konsole! Wenn es in einer Konsole ausgeführt werden soll müssen die doppelten Prozentzeichen in einfache abgeändert werden!!
Works as designed my friend!
RTFM
https://ss64.com/nt/for_f.html
P.s. Die Diskussionsrichtlinien solltest du auch mal durchlesen!
Diskussionsrichtlinien - die Regeln zu unseren Inhalten
Besonders den Absatz
Nicht zwei Kommentare nacheinander posten, sondern die BEARBEITEN-Funktion nutzen oder den Moderator bitten, den Kommentar zu löschen

Sag ich ja, aber immer erst mal auf Vorrat motzen, immer das selbe Theater ... nun denn 🖖