oldboy
Goto Top

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!!!

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

aqui
aqui 22.09.2023 um 22:38:12 Uhr
Goto Top
Es müsste aber eine BATCH-Lösung sein!!!
Wenn du noch die Güte hättest der Community zu verraten für welches der zahllosen Betriebssysteme diese Batch Datei geeignet sein soll? face-sad
OldBoy
OldBoy 22.09.2023 um 23:16:56 Uhr
Goto Top
Sorry! Hatte ich vergessen! Dieses Batch-Tool soll unter Win10 laufen!
MfG
Pjordorf
Pjordorf 22.09.2023 um 23:32:12 Uhr
Goto Top
Hallo,

Zitat von @OldBoy:
Sorry! Hatte ich vergessen! Dieses Batch-Tool soll unter Win10 laufen!
Darfs auch Powershell sein?

Gruß,
Peter
7907292512
Lösung 7907292512 22.09.2023, aktualisiert am 23.09.2023 um 00:00:32 Uhr
Goto Top
Moin.
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"  
PowerShell
Get-ChildItem "D:\Sicherung" -File | sort Basename -Descending | select -skip 10 | remove-item -Force -verbose  
Sid.
OldBoy
OldBoy 23.09.2023 um 09:41:15 Uhr
Goto Top
Leider nein, aus Gründen der gesamten, von mir in Batch bereits geleisteten, funktionierenden Vorarbeiten.
Danke für die Nachfrage und
mfG
OldBoy
OldBoy 23.09.2023 um 10:13:07 Uhr
Goto Top
Guten Morgen!
Danke für den übermittelten Code, aber er funktioniert leider nicht! Es wird nichts gelöscht!
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.

MfG
OldBoy
7907292512
7907292512 23.09.2023 aktualisiert um 10:59:38 Uhr
Goto Top
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.

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
OldBoy
OldBoy 23.09.2023 um 11:02:17 Uhr
Goto Top
Ich habe den Code ZUERST in einer cmd-Datei gespeichert, mehrmals ausgeführt und weil sich nichts getan hat, ERST DANACH den Versuch über die Konsole, um herauszufinden, warum es nicht funktioniert!
Ich habe auch keinen Abtippfehler begangen, da bin ich ganz sicher!
MfG
OldBoy

P.S.: Sorry, wenn ich Fehler bei der Bearbeitung der Posts und Kommentare machen, ich bin wirklich zu ersten Mal in diesem System. Gelobe Besserung!!!
OldBoy
OldBoy 23.09.2023 um 11:12:47 Uhr
Goto Top
Sorry! Ich glaube, ich brauche eine neue Brille!!!

ES FUNKTIONIERT!!!

Ich hatte bei der von mir eingetippten Pfadangabe in der cmd übersehen, dass sich ein zusätzlicher Punkt eingeschlichen hat (war auf kleine Schrift eingestellt); und der hat die Ausführung verhindert! Es ist zum aus der Haut fahren, dass ich DAS übersehen habe!!!

Vielen herzliche Dank für die Lösung meines Problems und
mfG
OldBoy
7907292512
7907292512 23.09.2023 aktualisiert um 11:17:08 Uhr
Goto Top
Sag ich ja, aber immer erst mal auf Vorrat motzen, immer das selbe Theater ... nun denn 🖖
OldBoy
OldBoy 23.09.2023 um 11:26:41 Uhr
Goto Top
Sorry, das war kein Motzen! War nur schon verzweifelt, weil mir bei diesem Problem tagelang ALLES schief gegangen ist!!!
Jetzt bin ich erleichtert, freue und bedanke mich für die tolle Hilfe!!!
MfG
OldBoy