-
-
Save Waxolunist/1885529 to your computer and use it in GitHub Desktop.
| :: **************************************************************************** | |
| :: Delete all files except the n newest | |
| :: **************************************************************************** | |
| :: ---------------------------------------------------------------------------- | |
| :: Usage: delete_except_newest.bat DIR N FILTER | |
| :: Example: delete_except_newest.bat C:\tmp 10 *.txt | |
| :: ---------------------------------------------------------------------------- | |
| :: **************************************************************************** | |
| :: **************************************************************************** | |
| :: Init | |
| REM CLS | |
| @ECHO off | |
| SetLocal EnableDelayedExpansion | |
| :: **************************************************************************** | |
| @ECHO. | |
| :: **************************************************************************** | |
| :: Variables | |
| :: **************************************************************************** | |
| SET DIR=%1% | |
| SET /a N=%2% | |
| SET FILTER=%3% | |
| :: **************************************************************************** | |
| REM list all filenames, except directories, sorted by date of creation, newest first | |
| for /F "skip=%N% tokens=*" %%G in ('dir /T:C /O:-D /B /A:-D "%DIR%\%FILTER%"') DO DEL "%DIR%\%%G | |
| @ECHO Program exited successfully. | |
| :: **************************************************************************** |
Evtl ins Verzeichnis wechseln und als DIR . angeben. & in Pfaden sind eine ganz schlechte Idee.
Alternativ einen symlink mit dem Namen setzen.
Evtl ins Verzeichnis wechseln und als DIR . angeben. & in Pfaden sind eine ganz schlechte Idee. Alternativ einen symlink mit dem Namen setzen.
Traumhaft! Vielen Dank. Hatte es mit %cd% probiert, Rest von https://stackoverflow.com/a/4420078 ging nicht. Das Wechseln des Verzeichnisses war sofort mein nächster Gedanke aber das mit dem Punkt kenne ich erst jetzt.
Es freut mich nach über 13 Jahren, nach Hochladen der Batch-Datei, man immernoch Hilfe vom Autor bekommt. Ich hoffe keine Umstände gemacht zu haben.
So ein reiches Unternehmen wie solutio und seinem Skriptprogramm charly-server.ps1 bzw. dem Befehl charly-server export databaseonly -ExportPath oder dem eigentlich autonom arbeitenden Skript charly-server backup-config, scheitern kläglich wo einfache aber geniale Leute mit ein paar Zeilen Code den Unterschied beweisen können.
https://charly-cdn-solutio.s3.amazonaws.com/release/docs/windows/classic/export_restore.html
Was ich auch erst jetzt wusste: Es heißt zwar .tar.gz aber für das Skript und generell wenn es um Dateiendigungen geht, gilt hier nur .gz.
Schön wenn man helfen kann. 😊
Wie könnte man delete_except_newest . 7 *.gz als Aufgabe in der Aufgabenplanung 1 Mal im Monat (vorerst, dann 1 Mal täglich, damit es immer 7 tar.gz-Archive bleiben) ausführen?
Da kenne ich mich mit Windows zu wenig aus. Aber hier sind ein paar gute Antworten https://stackoverflow.com/questions/7195503/setting-up-a-cron-job-in-windows
damit klappt es
mklink /D "A:\charly-export-database-tar-gz-mo-mi" "A:\FULLBACKUP-MO&MI-CAUTION-DO-NOT-CHANGE\Solutio\DatabaseBackup\postgres"
in der Aufgabenplanung steht:
Programm/Skript: A:\charly-export-database-tar-gz-mo-mi\delete_except_newest.bat
Argumente hinzufügen (optional): A:\charly-export-database-tar-gz-mo-mi\ 7 *.gz
es geht hauptsächlich darum, den unmöglichen Pfad mit dem &-Zeichen über mklink zu umgehen.
man achte auf die Syntax von mklink https://superuser.com/a/597552
solutio hat sein charly-internes Backup-Skript (zumindest wenn ich es manuell modifiziere und selbst Aufgaben mit selbstgeschrieben Befehlen in der Aufgabenplanung speichere) gebacken bekommen. Es sind nie mehr als 8 tar.gz Archive.
Es war mir eine Ehre 🦸♂️
Was kann man machen wenn man ein &-Zeichen im Pfad hat? Ich habe mich schon an https://www.robvanderwoude.com/escapechars.php gehalten und sogar die PowerShell v5.1 benutzt aber es hilft nicht.