Wie lösche ich Dateinamen mit ähnlichem Namensteil?

Wie lösche ich Dateinamen mit ähnlichem Namensteil?

Ich habe eine Reihe von Dateinamen, die mit einem Zeitstempel versehen sind (bis auf die Nanosekunde genau), und ich möchte nur eine Datei pro Sekunde behalten. Hier sind beispielsweise einige Dateinamen:

11-14-29-033.jpg

(was bedeutet, dass die Datei um 11 Uhr, 14. Minute, 29. Sekunde und 33. Nanosekunde aufgezeichnet wurde).

11-14-29-602.jpg
11-14-29-839.jpg
11-14-29-953.jpg
11-14-30-406.jpg
11-14-30-847.jpg
11-14-31-091.jpg
11-14-31-419.jpg
11-14-31-667.jpg
11-14-32-364.jpg
11-14-32-619.jpg
11-14-32-913.jpg
11-14-33-150.jpg
11-14-33-485.jpg
11-14-33-708.jpg
11-14-34-052.jpg
11-14-34-336.jpg
11-14-35-174.jpg
11-14-36-563.jpg
11-14-36-788.jpg
11-14-37-278.jpg
11-14-37-584.jpg
11-14-38-050.jpg
11-14-38-841.jpg
11-14-39-196.jpg
11-14-39-736.jpg
11-14-39-870.jpg
11-14-40-091.jpg
11-14-40-766.jpg
11-14-41-052.jpg
11-14-41-676.jpg

Gibt es eine Möglichkeit, eine Batchdatei (unter Windows) zu schreiben, um alle Dateien bis auf eine pro Sekunde zu entfernen?

Antwort1

Das hier sollte funktionieren:

@ECHO OFF
SETLOCAL EnableDelayedExpansion

SET "source=C:\adjust\path"

FOR /R "%source%" %%F IN ("??-??-??-???.jpg") DO (
    SET "file_name=%%~nF"
    SET "file_name=!file_name:~0,-4!"
    REN "%%F" "!file_name!%%~xF" >nul 2>&1
)

FOR /R "%source%" %%G IN ("??-??-??-???.jpg") DO (
    DEL "%%G"
)

ECHO Done^^!
PAUSE

Diese FOR /RSchleife benennt jede .jpgDatei von in um, HH-MM-SS-MMMindem HH-MM-SSeinfach die letzten 4 Zeichen entfernt werden, es sei denn, der Dateiname existiert bereits. Der RENBefehl benennt die Datei dann nicht um und sie wird anschließend gelöscht.

verwandte Informationen