![バッチファイルでffmpegを呼び出すことができません](https://rvso.com/image/1648629/%E3%83%90%E3%83%83%E3%83%81%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A7ffmpeg%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93.png)
プロンプトで次のコマンドを使用して、ffmpeg で多数のビデオ ファイルを再エンコードします。
for %F in ("..\*.*") DO ffmpeg -n -i "%F" -c:v libx265 -c:a copy "%~nF.mkv"
このコマンドを含むバッチ ファイルを作成し、プロファイル パスに配置しました。しかし、実行すると、次のようになります。
M:\>ff.bat
The following usage of the path operator in batch-parameter
substitution is invalid: %~nF.mkv"
For valid formats type CALL /? or FOR /?
The syntax of the command is incorrect.
M:\>for F" -c:v libx265 -crf 28 -c:a copy "F" -c:v libx265 -crf 28 -c:a copy "%~nF.mkv"
引用符に問題があるのでしょうか?
答え1
引用符に問題があるのでしょうか?
いいえ。それは の問題です%
。コマンド ラインでは 1 つの を使用します%
。バッチ ファイルでは を 2 倍にします%%
。
したがって、次のようにします。
for %%F in ("..\*.*") DO ffmpeg -n -i "%%F" -c:v libx265 -c:a copy "%%~nF.mkv"
FOR
バッチ プログラムではなくコマンド ラインでコマンドを使用している場合は、%G
の代わりにパーセント記号を 1 つだけ使用します%%G
。
ソース:For - ループコマンド - Windows CMD - SS64.com
参考文献
答え2
正確には、単一のパーセント記号ではなく、二重のパーセント記号を使用する必要があります。また、ffmpeg パスが %path% 変数内にあることを確認し、ffmpeg プログラムへのパス全体を指定する必要があります。