まず、私はグーグルでグーグルでこの問題を解決する方法を知りました。私はバッチファイルを作って、ac-3の場合はファイル内のオーディオを再エンコードし、ffmpegを使用する場合はoggにするようにしています。私はffmpegで変換を行う方法を知っています。オーディオが特定のコーデックにマッチする場合にのみ自動化する方法ではありません。ファイルのオーディオコーデックを取得するには、ffprobeとMediaInfoの2つの方法があります。コマンド出力をバッチで変数として設定する方法
MediaInfo --Inform="Audio;%%Format%%" "input.mkv"
または
ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "input.mkv"
しかし、私の問題は、コマンドの出力から変数を設定してあります。これは私が努力してきたコードであり、役に立たない。
SETLOCAL
for %%a in (*.mp4) do (
MediaInfo --Inform="Audio;%%Format%%" "%%a">codec.txt
SET /p codec=<codec.txt
DEL codec.txt
ECHO %codec%
)
pause
明らかに、これは私の目標の唯一の部分であるが、これは私が過去を得るように見えることができない部分です。私は、 "DEL codec.txt"部分を削除することで、実際に正しい出力をテキストファイルに保存していますが、変数にインポートしていないことを確認しました。とにかく私は変数への出力をうまく設定することができます、これは私が頻繁に私の検索で見つけた方法です。
ご迷惑をおかけして申し訳ありません。
[Windowsループセット環境変数のwindowsバッチコマンド]の重複している可能性があります(http://stackoverflow.com/questions/17598638/windows-batch-command-for-loop-set-environment-variable) –
可能な[バッチ - コマンド出力を変数に割り当てる](http://stackoverflow.com/questions/16203629/batch-assign-command-output-to-variable);関連:[バッチ - 変数に変数を指定したコマンド出力を割り当てる](http://stackoverflow.com/questions/28663803/batch-assign-command-output-with-variables-to-variable) – aschipfl