144502
Goto Top

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

Content-ID: 577072

Url: https://administrator.de/forum/batch-alte-backupversionen-loeschen-577072.html

Ausgedruckt am: 23.04.2025 um 00:04 Uhr

chiefteddy
chiefteddy 05.06.2020 um 16:37:18 Uhr
Goto Top
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
144260
144260 05.06.2020, aktualisiert am 06.06.2020 um 08:37:32 Uhr
Goto Top
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}"  
144502
144502 06.06.2020 um 13:32:21 Uhr
Goto Top
Vielen Dank an alle!
Zum einen, unter den Links sind wirklich hilfreiche Infos => Lesezeichen erstellt.

Mein Problem war aber weniger, dass ich die normalen Batchbefehle nicht kenne, sondern dass mir kein Lösungsweg einfiel , wie ich das Problem mit Batch-Hausmitteln realisieren kann. Powershell ist wegen der Zickigkeit beim Ausführen nicht so ideal, so dass ich jetzt versuchen werde, das Ganze mit dem durch @144260 aufgezeigten Lösungsweg als normales Batch aufzubauen. Wird sicher ein paar Codezeilen mehr geben, aber ich habe jetzt zumindest einen Lösungsansatz den ich versuche umzusetzen und dazu noch einiges an frischem Infomaterial.

Danke nochmal und schönes Wochenende!
Paul
Penny.Cilin
Penny.Cilin 06.06.2020 um 14:55:28 Uhr
Goto Top
Wenn deine Frage gelöst ist, dann Wie kann ich einen Beitrag als gelöst markieren? nicht vergessen.
144260
144260 06.06.2020 um 16:08:53 Uhr
Goto Top
Powershell ist wegen der Zickigkeit beim Ausführen nicht so ideal
Lach face-smile.
Penny.Cilin
Penny.Cilin 06.06.2020 um 16:58:07 Uhr
Goto Top
Zitat von @144502:

Vielen Dank an alle!
Zum einen, unter den Links sind wirklich hilfreiche Infos => Lesezeichen erstellt.

Powershell ist wegen der Zickigkeit beim Ausführen nicht so ideal, ...
Diese Aussage ist absolut lächerlich.Begründe dies....

Gruss Penny.
144502
144502 08.06.2020 um 17:31:11 Uhr
Goto Top
Lächerlich? Ein Batchscript kopiere ich einfach in ein beliebiges Verzeichnis und starte es per Doppelklick. Fertig.
Bei Powershell-Scripten müssen erst einige Verrenkungen gemacht werden, um sie auf diese Weise zu starten:
https://blog.doenselmann.com/powershell-skript-mit-batch-ausfuehren/
https://www.datenteiler.de/powershell-skript-mit-doppelklick-ausfuehren/

Das meinte ich mit "Zickig". Vielleicht hätte ich schreiben sollen "Powershell ist für mich wegen der Zickigkeit beim Ausführen nicht so ideal".

Aber wem sage ich das. Sorry, aber die Arroganz die in machen Foren herrscht ist - höflich ausgedrückt - unschön. Nicht jeder ist ein Scriptexperte und ich hatte mit Powershell bisher nichts zu tun, mit Batch schon. In meinen Beruf - Elektrokonstruktion - bin ich ein gut bezahlter Fachmann. Im Bereich Programmierung nicht. So what? Man muss nicht alles selber perfekt können, dafür gibt es Fachforen.

Einen schönen Tag noch, ich bin raus.
Paul