144502
Jun 05, 2020
841
8
0
Batch: Alte Backupversionen löschen
Hallo liebe Experten,
ich hoffe jemand kann mir bein meinem Problem behilflich sein.
In einem Arbeitsordner (ggfs auch in weiteren Unterordnern) habe ich viele Dateien nach folgendem Schema
KategorieA.NameA.1.bak
KategorieA.NameB.1.bak
KategorieB.NameA.1.bak
KategorieB.NameA.2.bak
KategorieB.NameA.3.bak
KategorieB.NameB.1.bak
KategorieB.NameC.1.bak
KategorieB.NameC.2.bak
KategorieC.NameA.1.bak
...
Ich bräuchte eine Batch Routine, welche bei eventuellen Duplikaten alle Duplikate, bis auf die Datei mit der höchsten Versionsnummer (die Zahl vor .txt) löscht.
Die Versionsnummern können allerdings durchaus 3-stellig werden.
Also aus obiger Liste wären folgende Dateien zu löschen:
KategorieB.NameA.1.bak
KategorieB.NameA.2.bak
KategorieB.NameC.1.bak
Das Ergebnis sollte sein, dass pro Name jeweils nur die Datei mit der höchsten Versionanummer übrig bleibt.
Ist so etwas mit Batch überhaubt machbar? Ich habe zwar schon öfter kleine Batchdateien geschrieben aber die Auswertung der Versionsnummern im Dateinamen übersteigt meine momentanen Fähigkheiten.
Vielen Dank für euren Input!
Grüße, Paul
ich hoffe jemand kann mir bein meinem Problem behilflich sein.
In einem Arbeitsordner (ggfs auch in weiteren Unterordnern) habe ich viele Dateien nach folgendem Schema
KategorieA.NameA.1.bak
KategorieA.NameB.1.bak
KategorieB.NameA.1.bak
KategorieB.NameA.2.bak
KategorieB.NameA.3.bak
KategorieB.NameB.1.bak
KategorieB.NameC.1.bak
KategorieB.NameC.2.bak
KategorieC.NameA.1.bak
...
Ich bräuchte eine Batch Routine, welche bei eventuellen Duplikaten alle Duplikate, bis auf die Datei mit der höchsten Versionsnummer (die Zahl vor .txt) löscht.
Die Versionsnummern können allerdings durchaus 3-stellig werden.
Also aus obiger Liste wären folgende Dateien zu löschen:
KategorieB.NameA.1.bak
KategorieB.NameA.2.bak
KategorieB.NameC.1.bak
Das Ergebnis sollte sein, dass pro Name jeweils nur die Datei mit der höchsten Versionanummer übrig bleibt.
Ist so etwas mit Batch überhaubt machbar? Ich habe zwar schon öfter kleine Batchdateien geschrieben aber die Auswertung der Versionsnummern im Dateinamen übersteigt meine momentanen Fähigkheiten.
Vielen Dank für euren Input!
Grüße, Paul
Please also mark the comments that contributed to the solution of the article
Content-Key: 577072
Url: https://administrator.de/contentid/577072
Printed on: April 23, 2024 at 02:04 o'clock
8 Comments
Latest comment
Hallo,
wie wäre es denn mal mit etwas Selbststudium. ZB hiermit: https://download.knowware.de/batch.pdf oder hier http://www.antonis.de/dos/batchtut/bat-kurs/index.htm
Das hilft dir sicher weiter. Du hast ja das Wochenende Zeit dafür.
Jürgen
wie wäre es denn mal mit etwas Selbststudium. ZB hiermit: https://download.knowware.de/batch.pdf oder hier http://www.antonis.de/dos/batchtut/bat-kurs/index.htm
Das hilft dir sicher weiter. Du hast ja das Wochenende Zeit dafür.
Jürgen
Powershell -EP ByPass -C "ls 'd:\ordner' -File -Filter *.bak -recurse | group {[regex]::match($_.Basename,'(.+)\.\d+$').Groups[1].Value} | %%{$_.Group | sort {[int]$_.Basename.split('.')[-1]} -Desc | select -skip 1 | del -Force}"
Moin,
und hier etwas Lesefutter bzgl. Windows Batch:
Gruss Penny.
und hier etwas Lesefutter bzgl. Windows Batch:
- Windows Batch Grundlagen
- Batch - ein paar Basics die man kennen sollte
- Workshop Batch for Runaways - Part I
- Workshop Batch for Runaways - Part II
- Workshop Batch for Runaways - Part III
- HowTo - Wie man Subroutinen in Batchfiles erstellt
- Tutorial zur FOR-Schleife
Gruss Penny.
Wenn deine Frage gelöst ist, dann How can I mark a post as solved? nicht vergessen.
Powershell ist wegen der Zickigkeit beim Ausführen nicht so ideal
Lach .