私はこのようになりますCMDでfor
ループを実行しようとしている:cmdコマンドラインでファイル名文字列変数を設定および使用する方法は?
for %f in (*.mp4) do (
set outfile=%f:mp4=mp3%
ffmpeg -i %f -vn -ar 44100 -ac 1 -b:a 32k -f mp3 %outfile%
)
スクリプトは、すべて* .MP4ファイルをつかむことになっている、それらにffmpegのコマンドを実行し、その後、同じ結果ファイルに名前を付けます拡張子だけが* .mp3に変更されたmp4として。
動作しません。出力は、文字通り%outfile%
と命名されています。私が推測しなければならないのは、outfile
変数の初期化や呼び出しに何か問題があります。おそらくデータ型の問題だとも思っていました。 %f
はおそらく文字列ではなくポインタなので、何らかの文字列抽出や型変換が必要です。
cmdで文字列変数としてファイル名を設定して使用するにはどうすればよいですか?
この変数をコードの1つのブロックで記述しているので、 'outfile'に対して[delayed expansion](http://ss64.com/nt/delayedexpansion.html)を有効にして使用する必要があります。それ以外の場合、変数はブロック全体が解析されるときに保持される値に展開されます。以下の[MCNDのアドバイス](http://stackoverflow.com/a/41813600)に従ってください。 – aschipfl