スポンサーリンク

バッチで,wavなどの音声を再生しよう (コマンドプロンプトから音を鳴らす方法)


batファイル中で,さりげなく音声を再生する方法。(wav/mp3とか,MIDIとか)

  • wavのファイル名を直接指定して実行するだけだと,Windows Media Playerが立ち上がり,再生後に消えてくれない。Playerが残ったままになてしまう。
    • →再生後はPlayerを自動的に消したい。


mshta.exeを使えばよい。



以下を play.bat として保存し,ダブルクリック。

@rem 音源の場所を指定
@set WAVPATH=C:\WINDOWS\Media\Windows XP Startup.wav

@rem 再生時間長をミリ秒で指定
@set HTA_MAX_TIME=5000

@rem 再生実行
@mshta "about:playing... <OBJECT CLASSID='CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95' WIDTH=100 HEIGHT=100><param name='src' value='%WAVPATH%'><param name='PlayCount' value='1'><param name='autostart' value='true'></OBJECT><script>window.resizeTo(10,10);window.moveTo(700,700);setTimeout(function(){window.close()},%HTA_MAX_TIME%);</script>"

実行すると,Windows XP 起動時のミュージックが再生される。

小さなIEの窓が表示されるが,その窓は,基底の時間が経過すると自動的に消えてくれる。


仕組みとしては,使い捨てのHTAアプリケーションを実行して,その中でMedia Playerのプラグインを呼び出し,指定秒数後にウィンドウを閉じるように指示している。


何かの処理の途中に組み込んだり,複数回,音を鳴らしたりする事も可能。



こういう方法のことを,「mshtaでワンライナーを書く」という。

mshta.exeについては,以下の記事を参照。

JavaScript をコマンドラインで実行する方法  (mshta.exeの使い方)
http://language-and-engineering.hatenablog.jp/entry/20081023/1224678990

また,HTAアプリケーション中でのMedia Playerプラグイン呼び出しについては,以下の記事を参照。

日経平均株価の下落ぶりをMIDIサウンドで味わう (コマンドラインでMIDI生成)
http://language-and-engineering.hatenablog.jp/entry/20081027/1225038111