for文が使えます。
書式としては、
for 変数 in (場所) do コマンドとなります
具体例として、動画・音楽の形式を変化するffmpegというコマンドを用いて、
あるディレクトリ内にあるflvファイルを全てwavに変換するという作業を考えます。
(ちなみにflvはニコニコ動画などの動画ファイル、wavは音声ファイルです。)
なおffmpegは
ffmpeg -i 入力ファイル 出力ファイルとすることで、入力ファイルを出力ファイルの形式に変換出来ます。
(ちなみに、ffmpegは入力にワイルドカードを受け付けないので、
一括処理をしようとするとfor文が必須になります。)
ディレクトリ構造が、
root
|-wavdir
|-flvdir
|-a.flv
|-b.flv
となっているとすると、
for %%i in (../flvdir/*.flv) do ffmpeg -i ../flvdir/%%~ni.flv ./%%~ni.wavと入力し、wavdir内で、バッチファイルとして保存して実行すると、
ffmpeg -i ../flvdir/a.flv ./a.wavというコマンドが順に実行され、
ffmpeg -i ../flvdir/b.flv ./b.wav
めでたくflvdir内の.flvで終わるファイルが全てwavに変換されwavdirに保存されます。
ここでのポイントは
1. for文で変化させる変数は%%で指定する(例では%%i)。
2. 場所の指定は相対パス。ワイルドカードの*が使用可能。
3. 変数の前に~nをつけるとファイル名の拡張子より前の部分が取得出来る。
(例では変数名がiなので、その前に~nをつけて、%%~niとなっています)
また、forはバッチファイルとして実行しないとエラーが出るようです。
ありがとう~!助かりました!ffmpegでワイルドカード使えなくて困ってました
返信削除