当文件名包含空格时 Bat 文件失败

当文件名包含空格时 Bat 文件失败

我有这个批处理文件,可以批量处理一些视频文件。只要文件名中没有空格,一切就都正常。如果文件名(测试影片.avi)中有空格,它会说

测试:没有此文件或目录

因此,它似乎将空格视为分隔符。我该如何解决这个问题?

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

答案1

在调用 ffmpeg 时,需要在 %%a 周围加上一些引号。

~编辑:添加修改后的脚本

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))"
)

相关内容