2017-06-27 10 views
0

バッチとffmpegを使用してビデオを変換するためのスクリプトがあります。しかし、なぜ%%〜nfと%%〜n1が(フォーマットなしで)ファイルの名前を返さないのか混同しています。イムはかなり%〜1変数が正常に動作して失われたものの、私は、原因が何であるかを確認するために、様々な「 '%を試してみた。バッチ%%〜n1が変数を返さない

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

ではなく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 %~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 %S02E01.mkv' 
) 

を返し、それは?the exampleのように私はこのスクリプトを作るために使用されるべきだったのに、他のイベントが〜%%ありません」 nf ".mkvが動作します。あなたが答えを出すのであれば、説明や説明へのリンクが素晴らしいでしょう。 \ utilsの\ MyFileの または場合にのみ:

+2

なぜ%% 1、しかし '%%〜n1'を使用しますか?なぜ、さらに '%'を追加するのでしょうか? – Stephan

+1

バッチファイルの '%' -signsを二重にすることは、['for'変数参照](http://ss64.com/nt/for.html)にのみ適用され、'%1'と混同しないでください。 [引数リファレンス](http://ss64.com/nt/syntax-args.html)(['call'](http://ss64.com/nt/call.html)も参照してください)。 – aschipfl

答えて

0

% 1はそう

'%~n1.mkv' 

は〜N1ファイル拡張子Cなしでファイル名に%1を展開しhttps://ss64.com/nt/syntax-args.html

%を参照してください、内部変数でありますパスは存在します(末尾にバックスラッシュはありません)。最後のパスは です。

関連する問題