Я решил включить этот ответ, так как считаю, что исправление не является технически лучшим способом решения вашей проблемы.
Лучший способ - использовать choice
Команда, вместо разрешения неконтролируемых входных данных через set /p
.
Насколько мне известно, нет необходимости изменять имя, содержащее пробелы, тем более что ваш код ffmpeg
уже использует имена в двойных кавычках.
Пример:
@Echo Off
"%__AppDir__%choice.exe" /T 10 /D N /M "Delete original file [default No]"
Set "delorig=%ErrorLevel%"
For %%G In ("*.mp4") Do (Echo Starting %%G
"ffmpeg.exe" -loglevel panic -hide_banner -i "%%G" -ss 00:00:25.000 -c:v copy -c:a copy "trimmed\%%G"
If Not ErrorLevel 1 If %delorig% Equ 1 Del /F/Q "%%G"
Echo %%G finished!)
Pause
Обратите внимание, что я включил расширение для ffmpeg
, чтобы предотвратить случайное изменение %PATHEXT%
от неиспользуемых файлов .EXE
. Я бы также предложил, если известно / возможно, использовать полный путь к ffmpeg.exe
, чтобы гарантировать, что возможные изменения %PATH%
/ directory / registry не помешают его запуску (поскольку код явно не задан текущий каталог). Кроме того, код сначала не гарантирует, что в текущем каталоге существует каталог с именем trimmed
, поэтому, если ffmpeg
не может создать его сам, вам, вероятно, следует выполнить проверку и / или сначала создать его.