hihatchi

Per Batch Dateienname im Datumformat löschen

Hallo zusammen,

es geht um die Situation, dass auf einem Pc, der Werbeflyer abspielt, einmal täglich eine Batch laufen soll, die den Player mit taskkill beendet, mir die Dateien löscht, die nicht mehr aktuell sind (also der Dateiname hinter dem aktuellen Datum liegt) und den Player wieder startet.
die Dateien sind immer so aufgebaut YY-MM-DD.avi.

Über Forfiles hab ich es nicht hinbekommen, weil dieser Befehl nach dem Änderungsdatum geht. Ich erstelle die Dateien aber jeden Monat immer auf einmal.

Es geht nur um den Part mit dem löschen, wie bekomme ich das hin?

Vielen Dank schon mal für eure Hilfe,

Gruß
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 650178

Url: https://administrator.de/forum/per-batch-dateienname-im-datumformat-loeschen-650178.html

Ausgedruckt am: 01.05.2025 um 04:05 Uhr

147323
147323 10.02.2021 aktualisiert um 11:43:12 Uhr
Goto Top
Machs gleich mit der Powershell
ls 'D:\Ordner\*.avi' -File | sort {[datetime]::ParseExact($_.Basename,'yy-MM-dd',$null)} -Desc | select -Skip 1 | rm -Force -Verbose  
Das kannst du wenn du willst auch direkt aus der Batch so aufrufen
@echo off
powershell -EP Bypass -C "ls 'D:\Ordner\*.avi' -File | sort {[datetime]::ParseExact($_.Basename,'yy-MM-dd',$null)} -Desc | select -Skip 1 | rm -Force -Verbose"

Gruß j.
Hihatchi
Hihatchi 14.02.2021 um 22:28:20 Uhr
Goto Top
Leider funktioniert das nicht. Hab versuchsweise 6 avi erstellt. 2 in der Vergangenheit, eine mit dem heutigen datum und 3 in der Zukunft. Es wird mir alles gelöscht, außer eine avi (die aktuellste)
Hihatchi
Hihatchi 16.03.2021 um 23:55:16 Uhr
Goto Top
Das Problem ist leider immer noch aktuell, ich bekomm es einfach nicht hin :/ weiß keiner eine funktionierende Lösung, oder warum das skript von 147323 bei mir nicht geht?
147669
Lösung 147669 17.03.2021 aktualisiert um 10:10:59 Uhr
Goto Top
Zitat von @Hihatchi:

Das Problem ist leider immer noch aktuell, ich bekomm es einfach nicht hin :/ weiß keiner eine funktionierende Lösung, oder warum das skript von 147323 bei mir nicht geht?

Ich denke das liegt daran das deine Beschreibung einfach nur etwas missverständlich geschrieben ist, ich versuche mal deine Beschreibung so zu interpretieren
ls 'D:\Ordner\*.avi' -File | ?{[datetime]::ParseExact($_.Basename,'yy-MM-dd',$null) -lt (get-date).Date } | rm -Force -Verbose  
Meine hoffentlich passende Interpretation: Alle avi's löschen deren Datum (welches aus dem Basename der Datei gebildet wird) älter ist als das des zum Zeitpunkt der Ausführung des Skript aktuellen Tages um 00:00 Uhr.

Der Code von @147323 hat deine Beschreibung stattdessen so interpretiert das nur die aktuellste Datei im Verzeichnis erhalten bleiben soll. Kann ja keiner vorhersehen das da Dateien mit Datum in der Zukunft liegen face-wink.

hth
Gruß SK
Hihatchi
Hihatchi 17.03.2021 um 11:34:02 Uhr
Goto Top
Super genial, macht genau das was es soll. Danke face-smile