Batch Ordner mit Zeitstempel erstellen und Datei hinein kopieren
Hi,
hab hier grad so meine Probleme.
In der Batch soll ein Backup einer Datenbankdatei angelegt werden.
Es handelt sich um eine Redis-Datenbank mit einer dump.rdb
Wenn ich diese kopiere behält sie ihr ursprüngliches alter, welches nunmehr weit älter als 3 Tage ist.
Wenn ich nun nach dem erstellen des Backups noch alle Backups löschen möchte die älter als 3 Tage sind, wird logischerweise auch die neuangelegt gelöscht.
Nun dachte ich mir, ich erstelle einen Ordner unmittelbar vorm kopieren der rdb und schiebe die Kopie da hinein.
Dann kann ich ja im endeffekt alle Ordner älter als 3 Tage löschen.
Aber genau da steh ich nun wie der Ochse vorm Berg.
Die Batch enthält noch eine Menge mehr Funktionen wie Backups anderer Dateien und Gameserver stoppen bzw restart, deswegen poste ich hier nur die betreffenden Stellen...
Um den Ordner zu erstellen würde ich wie folgt vorgehen:
Um den Zeitstempel zu setzten:
Den Ordner erstellen:
Normalerweise würde ich die Datei ja so kopieren/verschieben:
Zum Löschen einer File würde ich nun eintragen:
Würde aber nichts bringen da ja die eben kopierte Datei schon älter als 3 Tage ist...
Zum Löschen eines Ordners mit Inhalt (glaube ich zumindest):
Aber wie kann ich die Datei in den eben erstellten Ordner kopieren, wenn dessen Namen nicht feststeht (Backup_DB_%stamp%)?
Nochmal zusammenfassend:
Datei soll als Kopie gesichert werden
Kopien älter als 3 Tage gelöscht werden
Die Datei einfach umbenennen in dump_%stamp%.rdb bringt mir nichts, da die Datei ja trotzdem älter als 3 Tage
Wer hat nun einen netten Tip für mich wie ich das bewerkstelligen könnte, ich steh grad auf dem Schlauch....
MFG CH!LL3R
hab hier grad so meine Probleme.
In der Batch soll ein Backup einer Datenbankdatei angelegt werden.
Es handelt sich um eine Redis-Datenbank mit einer dump.rdb
Wenn ich diese kopiere behält sie ihr ursprüngliches alter, welches nunmehr weit älter als 3 Tage ist.
Wenn ich nun nach dem erstellen des Backups noch alle Backups löschen möchte die älter als 3 Tage sind, wird logischerweise auch die neuangelegt gelöscht.
Nun dachte ich mir, ich erstelle einen Ordner unmittelbar vorm kopieren der rdb und schiebe die Kopie da hinein.
Dann kann ich ja im endeffekt alle Ordner älter als 3 Tage löschen.
Aber genau da steh ich nun wie der Ochse vorm Berg.
Die Batch enthält noch eine Menge mehr Funktionen wie Backups anderer Dateien und Gameserver stoppen bzw restart, deswegen poste ich hier nur die betreffenden Stellen...
Um den Ordner zu erstellen würde ich wie folgt vorgehen:
Um den Zeitstempel zu setzten:
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set dt=%%a
set YYYY=%dt:~0,4%
set MM=%dt:~4,2%
set DD=%dt:~6,2%
set HH=%dt:~8,2%
set Min=%dt:~10,2%
set Sec=%dt:~12,2%
set date=%DD%_%MM%_%YYYY%
set time=%HH%_%Min%_%Sec%
set stamp=%DD%_%MM%_%YYYY%--%HH%_%Min%_%Sec%
mkdir "%arma3srvpath%\%servername%\Backup\Backup_Datenbank\Backup_DB_%stamp%"
copy "%arma3srvpath%\DB\dump.rdb" "%arma3srvpath%\%servername%\Backup\Backup_Datenbank\Zielordner\dump.rdb"
Forfiles /P %arma3srvpath%\%servername%\Backup\Backup_Datenbank\ /M *.* /D -3 /C "cmd /c del /q @path"
Zum Löschen eines Ordners mit Inhalt (glaube ich zumindest):
erase %arma3srvpath%\%servername%\Backup\Backup_Datenbank\*.* /D -3 /C "cmd /c del /q @path"
Aber wie kann ich die Datei in den eben erstellten Ordner kopieren, wenn dessen Namen nicht feststeht (Backup_DB_%stamp%)?
Nochmal zusammenfassend:
Datei soll als Kopie gesichert werden
Kopien älter als 3 Tage gelöscht werden
Die Datei einfach umbenennen in dump_%stamp%.rdb bringt mir nichts, da die Datei ja trotzdem älter als 3 Tage
Wer hat nun einen netten Tip für mich wie ich das bewerkstelligen könnte, ich steh grad auf dem Schlauch....
MFG CH!LL3R
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 258566
Url: https://administrator.de/contentid/258566
Ausgedruckt am: 26.11.2024 um 06:11 Uhr
3 Kommentare
Neuester Kommentar
Hey, die Idee mit dem Neuerstellen eines Ordners ist doch gut. Weshalb kennst du denn seinen Namen nicht? Außerdem beziehen sich die Funktionen von Forfiles doch auf das Datum der letzten Änderung, nicht der Erstellung.
forfiles
Gruß, Endoro
forfiles
Gruß, Endoro
Ehrlich gesagt verstehe ich das Problem nicht. Wenn du aktuell einen Ordner erstellst kennst du seinen Namen und den Zeitstempel. Worin besteht denn die Schwierigkeit, in den Ordner die einzige geeignete Datei zu schieben und dann alle Ordner älter drei Tage samt der jeweils darin steckenden Datei zu löschen? Dann hast du eben 24 Ordner, die brauchen kaum Platz und fressen kein Brot
Gruß, Endoro
Gruß, Endoro