Windows cmd.exe - Jak zapobiec nadpisywaniu plików wyjściowych, gdy ffmpeg przetwarza katalog rekurencyjnie?

1

Próbuję ffmpegpowtarzać iterację w folderze rekurencyjnie i pobierać zdjęcia z wielu różnych klipów wideo.

Jeśli uruchomię:

for /r "W:\Exports\1 - Dailies\" %f in (*.mov) do ffmpeg -i "%f" -vf fps=6/60 still%05d.jpg

ffmpegbędzie pobierał kadr co 10 sekund od pierwszego .movnapotkanego pliku, ale następnie, gdy przejdzie do drugiego .movpliku, liczba still%05d.jpgponownych uruchomień do still00001.jpgi fotosy z drugiego pliku zastąpią kadry z pierwszego pliku. Następnie zdjęcia z trzeciego pliku zastępują drugi itd. I tak dalej.

Jak mogę dołączyć nazwę pliku wejściowego do nazwy pliku wyjściowego JPG, aby nie nastąpiło nadpisanie?

użytkownik260467
źródło
%fzawiera nazwę pliku, więc użyj"%fstill%05d.jpg"
DavidPostill
@DavidPostill Jeśli spróbuję, pojawi się następujący błąd:Unable to find a suitable output format for 'W:\Exports\1' W:\Exports\1: Invalid argument
user260467
1
%fodbędzie się dysk, ścieżka, nazwa, rozszerzenie, użycie%f~n
LotPings
W rzeczy samej. Co powiedział @LotPings.
DavidPostill
Blisko, ale okazało się, że tak naprawdę było %~nf. Znaleziono to z tego: superuser.com/a/489242/452924
user260467

Odpowiedzi:

2

Z tej odpowiedzi wynika, że ​​mogę użyć %~nf:

for /r "W:\Exports\1 - Dailies\" %f in (*.mov) do ffmpeg -i "%f" -vf fps=6/60 %~nf_still%05d.jpg
użytkownik260467
źródło