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-Key: 577072

Url: https://administrator.de/contentid/577072

Printed on: April 23, 2024 at 02:04 o'clock

Member: chiefteddy
chiefteddy Jun 05, 2020 at 14:37:18 (UTC)
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
Mitglied: 144260
144260 Jun 05, 2020, updated at Jun 06, 2020 at 06:37:32 (UTC)
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}"  
Mitglied: 144502
144502 Jun 06, 2020 at 11:32:21 (UTC)
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
Member: Penny.Cilin
Penny.Cilin Jun 06, 2020 at 12:55:28 (UTC)
Goto Top
Wenn deine Frage gelöst ist, dann How can I mark a post as solved? nicht vergessen.
Mitglied: 144260
144260 Jun 06, 2020 at 14:08:53 (UTC)
Goto Top
Powershell ist wegen der Zickigkeit beim Ausführen nicht so ideal
Lach face-smile.
Member: Penny.Cilin
Penny.Cilin Jun 06, 2020 at 14:58:07 (UTC)
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.
Mitglied: 144502
144502 Jun 08, 2020 at 15:31:11 (UTC)
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