Dateien in best. Verzeichnis suchen und nur die 3 Neuesten Dateien behalten
Hallo Leute,
ich hoffe mir kann jemand weiterhelfen. In Sachen Batch bin ich nicht so bewandert und brauche dringendst Hilfe.
Problem:
Ich hab ein Programm was beim beenden immer eine komplette Sicherung einer SQL Datenbank anlegt, das sind immer 2 Dateien mit so ca 1,5GB.
Doch leider kann man in dem Programm nicht einstellen das z.B. nur die letzten drei Sicherungen behalten werden sollen.
Lösungsansatz:
Ich wollte mir eine Batchdatei erstellen die den Ordner mit den Sicherungsdateien scannt und nur die 3 (6) letzten Sicherungen behält und den Rest löscht.Diese Batchdatei wollte ich beim beenden des Programms oder beim starten oder herunterfahren des Rechners ausführen lassen.
Oder in vielleicht in einen bestimmten Zeitplan.
Die Sicherungsdateien die immer zusammengehören haben den selben Namen mit den Endungen ".bak" , "bkl".
Aktuell zusammengebastelter Code:
@echo on
setlocal
set workdir="C:\Users\Creator\Documents\finance to date Backup - Kopie\"
set files=
dir %workdir% /A-D/B/OGD>%temp%files.tmp
for /f "skip=4 delims=" %i in ('dir /a-D /o-d /b *.*') do Del /y "%~i"
del %temp%files.tmp
Aber irgendwie funktioniert das ganze nicht.
ich hoffe mir kann jemand weiterhelfen.
Gruß CX
ich hoffe mir kann jemand weiterhelfen. In Sachen Batch bin ich nicht so bewandert und brauche dringendst Hilfe.
Problem:
Ich hab ein Programm was beim beenden immer eine komplette Sicherung einer SQL Datenbank anlegt, das sind immer 2 Dateien mit so ca 1,5GB.
Doch leider kann man in dem Programm nicht einstellen das z.B. nur die letzten drei Sicherungen behalten werden sollen.
Lösungsansatz:
Ich wollte mir eine Batchdatei erstellen die den Ordner mit den Sicherungsdateien scannt und nur die 3 (6) letzten Sicherungen behält und den Rest löscht.Diese Batchdatei wollte ich beim beenden des Programms oder beim starten oder herunterfahren des Rechners ausführen lassen.
Oder in vielleicht in einen bestimmten Zeitplan.
Die Sicherungsdateien die immer zusammengehören haben den selben Namen mit den Endungen ".bak" , "bkl".
Aktuell zusammengebastelter Code:
@echo on
setlocal
set workdir="C:\Users\Creator\Documents\finance to date Backup - Kopie\"
set files=
dir %workdir% /A-D/B/OGD>%temp%files.tmp
for /f "skip=4 delims=" %i in ('dir /a-D /o-d /b *.*') do Del /y "%~i"
del %temp%files.tmp
Aber irgendwie funktioniert das ganze nicht.
ich hoffe mir kann jemand weiterhelfen.
Gruß CX
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 276520
Url: https://administrator.de/forum/dateien-in-best-verzeichnis-suchen-und-nur-die-3-neuesten-dateien-behalten-276520.html
Ausgedruckt am: 15.04.2025 um 10:04 Uhr
11 Kommentare
Neuester Kommentar

Moin,
mit Powershell z.B. ein Einzeiler
oder Batch
Gruß jodel32
mit Powershell z.B. ein Einzeiler
1
gci 'C:\Users\Creator\Documents\finance to date Backup - Kopie' -Include '*.bkf','*.bak' | ?{!$_.PSIsContainer} | group Basename | sort {$_.Group.DateCreated} -Desc | select -skip 3 | %{remove-item $_.Group.Fullname -Force}
1
2
3
2
3
@echo off
set "workdir=C:\Users\Creator\Documents\finance to date Backup - Kopie"
for /f "skip=6 tokens=* delims=" %%a in ('dir /B /A-D /O-D "%workdir%\*.*"') do del "%workdir%\%%a"
Hallo,
um die letzten 5 Versionen eines Verzeichnisinhaltes / einer Datei zu sichern, könnte man auch den Wochentag ermitteln (müsste irgendwas mit set DOW oder set daysofweek und tokens sein) und dann die Dateien aus dem Speicherpfad auf das Backup-Medium kopieren - in das Verzeichnis, das den aktuellen Wochentag als Verzeichnisnamen hat.
So werden alle zu sichernden Dateien am Montag in das Verzeichnis Montag kopiert usw. usf.. Somit kann man fast eine Woche zurückverfolgen. Am nächsten Montag werden die Backups der Vorwoche mit den aktuellen Dateien überschrieben.
Kann auch über den Windows Aufgabenplaner erfolgen oder - falls nur minimale batch-Kenntnisse vorhanden sind - mit 5 Batch-Dateien.
Oder eben höherem Niveau nach Jodel's Methode.
Gruß
Holger
um die letzten 5 Versionen eines Verzeichnisinhaltes / einer Datei zu sichern, könnte man auch den Wochentag ermitteln (müsste irgendwas mit set DOW oder set daysofweek und tokens sein) und dann die Dateien aus dem Speicherpfad auf das Backup-Medium kopieren - in das Verzeichnis, das den aktuellen Wochentag als Verzeichnisnamen hat.
So werden alle zu sichernden Dateien am Montag in das Verzeichnis Montag kopiert usw. usf.. Somit kann man fast eine Woche zurückverfolgen. Am nächsten Montag werden die Backups der Vorwoche mit den aktuellen Dateien überschrieben.
Kann auch über den Windows Aufgabenplaner erfolgen oder - falls nur minimale batch-Kenntnisse vorhanden sind - mit 5 Batch-Dateien.
Oder eben höherem Niveau nach Jodel's Methode.
Gruß
Holger

sorry kleiner Typo, ist oben korrigiert.
Und für Debugzwecke öffnet man immer manuell eine Konsole, oder fügt alternativ am Ende den Befehl
!
Und für Debugzwecke öffnet man immer manuell eine Konsole, oder fügt alternativ am Ende den Befehl
Pause
ein, dann sieht man auch was Probleme macht ...
Moin Marco,
skip überspringt einfach am Anfang die angegebene Anzahl an Zeilen.
Die Parameter des DIR-Befehls machen folgendes
/B = Benutzt das einfache Ausgabeformat bei dem nur die Datei-/Ordnernamen untereinander aufgelistet werden.
A-D = schließt Ordner in der Auflistung aus, so dass nur Dateien angezeigt werden.
/O-D = Sortiert die Dateien in absteigender Reihenfolge anhand des Datums, so dass neuere Dateien ganz oben stehen.
Steht auch alles schön beschrieben wenn du auf der Konsole mal ein
Und sorry, für das unterschlagene /f
Gruß jodel32
Kann mir vielleicht noch jemand erklären was das tokens und delims macht. Und wofür /B /A-D /O-D steht?
tokens bestimmt welche Bestandteile der Zeile getrennt durch die Zeichen welche bei delim angeben werden, in Variablen landen. In diesem Fall wollen wir die ganze Zeile in einer Variablen haben, deshalb gibt man keinen Delimiter an und setzt tokens auf *. In diesem Fall könnte man tokens auch weglassen wenn man für den Delimiter ein leeres Zeichen angibt.skip überspringt einfach am Anfang die angegebene Anzahl an Zeilen.
Die Parameter des DIR-Befehls machen folgendes
/B = Benutzt das einfache Ausgabeformat bei dem nur die Datei-/Ordnernamen untereinander aufgelistet werden.
A-D = schließt Ordner in der Auflistung aus, so dass nur Dateien angezeigt werden.
/O-D = Sortiert die Dateien in absteigender Reihenfolge anhand des Datums, so dass neuere Dateien ganz oben stehen.
Steht auch alles schön beschrieben wenn du auf der Konsole mal ein
dir /?
eingibst.Und sorry, für das unterschlagene /f
Gruß jodel32