batファイルを使用して連番画像から特定規則で画像を抽出する
目的
AviUtlにて,動画を連番BMP出力(または連番PNG出力)して,それらの連番画像から特定のフレームを偶数番,奇数番など規則的に取り出したい.ここでは,3個飛ばしの例を記載する.

おそらく方法はいくらかあるが,Windowsにて追加でソフトのインストールが必要なく実施できるバッチファイル(*.bat)にて実現する方法を紹介する.
| 名称 | 規格 | 製造会社 | 備考 |
|---|---|---|---|
| オペレーティングシステム | Windows 10 Pro 64ビット,22H2 | マイクロソフト |
結論
以下をbatファイルとして連番画像と同一フォルダーに保存して実行すると,tempフォルダー内に抽出された画像がコピーされる*1:
@echo off setlocal enabledelayedexpansion rem 連番数字前までのファイル名 set filename_prefix=6_ rem 抽出先のディレクトリー指定 set pickup_dst=temp rem 対象とする連番出力画像の開始番号 set idx_start=0 rem 対象とする連番出力画像の番号増分 rem ☞ここでは3のため00000,00003,00006,……となる set idx_delta=3 rem 対象とする連番出力画像の終了番号 set idx_end=182 mkdir %pickup_dst% for /l %%n in (%idx_start%,%idx_delta%,%idx_end%) do ( rem 5ケタの場合は,変数前に0を4個分記載する set num=0000%%n rem 5ケタの場合は,5を指定する set num=!num:~-5,5! set filename=!filename_prefix!!num!.png copy !filename! !pickup_dst!\ ) endlocal

参考サイト
- .bat(バッチファイル)で数値の任意の桁を0で埋める方法 | 技術的特異点(2024/02/10現在)
- 環境遅延変数の原因と2つのポイント #コマンドプロンプト - Qiita(2024/02/10現在)
*1:書式の詳細は,参考サイトに記載したサイト参照