![Wie lösche ich Dateinamen mit ähnlichem Namensteil?](https://rvso.com/image/1552785/Wie%20l%C3%B6sche%20ich%20Dateinamen%20mit%20%C3%A4hnlichem%20Namensteil%3F.png)
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 /R
Schleife benennt jede .jpg
Datei von in um, HH-MM-SS-MMM
indem HH-MM-SS
einfach die letzten 4 Zeichen entfernt werden, es sei denn, der Dateiname existiert bereits. Der REN
Befehl benennt die Datei dann nicht um und sie wird anschließend gelöscht.