我有一个使用批处理和ffmpeg转换视频的脚本。但是我很困惑为什么%% ~nf和%% ~n1没有返回文件的名称(没有格式)。我尝试了各种各样的" ' %,看看原因是什么,虽然因为%~1变量工作正常而非常失败。
if not %Vcodec% == h264 if not %Acodec% == ac3 (echo Converting Video, Converting Audio
'C:\ffmpeg\bin\ffmpeg.exe -i "%~1" -map 0 -vcodec libx264 -scodec copy -acodec ac3 -b:a 640K '%%~n1.mkv')
可生产
C:\Users\Desktop\to fix>if not mpeg4 == h264 if not mp3 == ac3 (
echo Converting Video, Converting Audio
'C:\ffmpeg\bin\ffmpeg.exe -i "S02E01.avi" -map 0 -vcodec libx264 -scodec copy -acodec ac3 -b:a 640K %~n1.mkv'
)
而不是SO2EO1。如果我向它添加另一个%,它将返回
C:\Users\Desktop\to fix>if not mpeg4 == h264 if not mp3 == ac3 (
echo Converting Video, Converting Audio
'C:\ffmpeg\bin\ffmpeg.exe -i "S02E01.avi" -map 0 -vcodec libx264 -scodec copy -acodec ac3 -b:a 640K %S02E01.mkv'
)
所以,我不明白为什么一个变量有效,而另一个变量不起作用?正如the example我曾经用过这个脚本" %% ~nf" .mkv一样。我是脚本编写的新手,所以如果你确实提供了答案,那么解释或解释的链接就会很棒。
答案 0 :(得分:0)
%1是内部变量,所以
'%~n1.mkv'
请参阅https://ss64.com/nt/syntax-args.html
%~n1将%1展开到文件名,不带文件扩展名为C:\ utils \ MyFile 或者如果只存在路径(没有反斜杠) - 最后一个 该路径中的文件夹。