Ошибка файла Bat, когда в имени файла есть пробелы

1

У меня есть этот пакетный файл, который обрабатывает некоторые видео файлы в пакете. Все работает хорошо, если имя файла не имеет пробелов в имени. Если имя файла (test movie.avi) имеет пробел, оно говорит

test: нет такого файла или каталога

Так что, похоже, это трактует пространство как разделитель. Как мне обойти эту проблему?

for %%a in (%1\*.avi) do (
   ffmpeg -i %%a -c:v libx264 -movflags +faststart -preset slow -crf 22 -b:v 500k -vf "scale=480:trunc(ow/a/2)*2" -threads 0 -c:a libfdk_aac -b:a 128k "%2/%%~na.mp4" -vf select="not(mod(n\,10))"
)

Вот как я называю это:

Process.bat C:\FFMPEG\inputfiles C:\FFMPEG\outputfiles
kheya
источник
Я нашел решение!
Хея
2
Вы должны опубликовать свое решение в качестве ответа, чтобы помочь будущим посетителям сайта, которые могут столкнуться с той же проблемой.
Сенсин
1
Я никогда не понимал, почему люди упоминают, что они нашли решение, но на самом деле не предоставляют решение.
Llogan
1
-1 как вы хорошо знаете, это не имеет ничего общего с ffmpeg. Любая программа потерпит неудачу, если в файле есть пробелы и нет кавычек. попробуйте блокнот abc .txt не откроет этот файл. Этот вопрос бесполезен никому ffmpeg в названии не имеет значения. Вы не устраняли неполадки.
barlop
Я решил сохранить -1, которое я дал вам (даже после того, как кто-то отредактировал название для вас), на этот раз, потому что вы не удосужились найти способ сохранить пробелы в имени файла. Это в шутку легко найти.
Barlop

Ответы:

3

Вам нужно несколько кавычек вокруг вашего %% a при вызове ffmpeg.

~ Edit: добавлен модифицированный скрипт

for %%a in (%1\*.avi) do (
   ffmpeg -i "%%a" -c:v libx264 -movflags +faststart -preset slow -crf 22 -b:v 500k -vf "scale=480:trunc(ow/a/2)*2" -threads 0 -c:a libfdk_aac -b:a 128k "%2/%%~na.mp4" -vf select="not(mod(n\,10))"
)
KJ4IPS
источник