バッチファイルでffmpegを呼び出すことができません

バッチファイルでffmpegを呼び出すことができません

プロンプトで次のコマンドを使用して、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 プログラムへのパス全体を指定する必要があります。

関連情報