バッチファイル:mpegファイルから音楽ソースの抽出

【環境】WindowsXP Pro.

便利なソフトウェアというのはたくさんありますが、よく使うもの程同じ作業を繰り返すこと、即ちルーチン処理が面倒になってきます。そのためにデスクトップやSendToにショートカットを作成したりしますが、一連の処理をまとめてやるのに最適なバッチファイルという仕組みをWindowsが備えているのでこれを使わない手はありません。この間から積極的にバッチファイルの使用を試みているのですが折角なのでたまに紹介して行こうかと思います。

なおバッチファイルとはコマンドプロンプトで使用できるコマンドを連続して実行する簡易プログラムです。条件分岐や変数など基本的な要素は備えており手軽に使えるので便利です。イメージとしてはBASICに近いかも。
バッチファイルを読むにはコマンドの知識が必要となってきますがここでは解説しません。需要があればしますがネットにはよくまとまったページが多数あるので興味があればそちらを参照下さい。


今回の目的はmpegファイルから音楽ソースを抽出することです。ゲームのOPテーマの試聴曲がデモムービーの形でしか提供されていないときに頻回に行っています。
使用したソフトウェアはSCMPXというプレイヤ/デコーダ/エンコーダ。上記の抽出処理が容易にできるので重宝しています。
早速バッチファイルの中身です。

@echo off
setlocal

rem SCMPXのインストールパスを指定して下さい。
set SCMPX_PATH="C:\Program Files\SCMPX\SCMPX.EXE"

rem パラメータが付加されている場合
if "%1" == "" goto labelInput
%SCMPX_PATH% -x "%~f1" "%~dpn1.mp2"
goto labelEnd

rem パラメータが付加されていない場合
:labelInput
echo リップするファイルを指定して下さい。
copy con ~tempInput.txt
copy set_var.txt+~tempInput.txt ~tempResult.bat
call ~tempResult.bat

call "%0" "%VAR%"

rem 一時ファイルの削除
del ~tempInput.txt
del ~tempResult.bat

:labelEnd

endlocal

同じくset_var.txtの中身。

SET VAR=

ドラッグ&ドロップなどでこのバッチファイルにmpegファイルを渡せば勝手に拡張子を.mp2にしたものを抽出(できれば)します。バッチファイルを単独で起動した場合はファイルの指定を求めて来るのでパスを入力*1すれば同じく抽出します。
今回のポイントは19行目で一般の変数にパス演算を適用する方法が分からなかったので、自分自身を再帰呼び出しして変数をパラメータとして渡しています。

現在はこれをSendToに登録して使っています。ああ、そういえば複数ファイルに対応してないや。その状況になったら書き直します。

*1:パスを入力した後にはCtrl+Zを押してからReturn。FEPを使う場合はAlt+半角/全角 漢字。