批处理%% ~n1不返回变量

时间:2017-06-27 07:26:18

标签: batch-file ffmpeg

我有一个使用批处理和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一样。我是脚本编写的新手,所以如果你确实提供了答案,那么解释或解释的链接就会很棒。

1 个答案:

答案 0 :(得分:0)

%1是内部变量,所以

'%~n1.mkv'

请参阅https://ss64.com/nt/syntax-args.html

  

%~n1将%1展开到文件名,不带文件扩展名为C:\ utils \ MyFile   或者如果只存在路径(没有反斜杠) - 最后一个   该路径中的文件夹。