CatShanty2の同時起動アプリでバッチと連携してみよう #
BIOSは吸い出せてもDOSはイマイチわからない?
中身がわかれば応用が効く。基本のキの字をおさらいしてみましょう。
バッチって? #
コマンドプロンプトで一連の作業を実行させるためのテキストファイルです。
メモ帳などでテキストファイルを編集して、拡張子を.bat
にすればバッチファイルとして実行できます。
コマンドプロンプトって? #
Windows10 ならスタートを右クリックすると「コマンドプロンプト」という項目が見つかると思います。
「コマンドプロンプト」をクリックすると俗に云う「DOS窓」「黒い画面」が開きます。
PowerShell になっている人は、タスクバーの設定>"コマンドプロンプトをWindows PowerShellに置き換える" をOFFにするか、ファイル名を指定して実行>cmd[ENTER]で出てきますよ。
コマンドプロンプトはCUI(キャラクタベースユーザーインターフェースなどの略)と呼ばれる、命令(コマンド)を文字で入力してプログラム等を実行するコンソール画面です。
この命令をあらかじめバッチファイルに記述しておくことで、いちいちDOS窓を開いて一つ一つコマンドを手入力しなくても一連の実行を行うことができるのです。
CatShatny2 の同時起動アプリ? #
CatShanty2 では、エミュレータの起動及びエミュレータからの復帰時のタイミングで、他のプログラムを起動することができます。
単に他のプログラムを起動するだけでなく、CatShanty2独自の置換定数という仕組みを利用すれば、プログラムに対して状況に応じた引数(パラメータ)を渡すことも可能です。
つまり起動されるプログラムが引数に対応していれば、その都度プログラムの動き方を指定することができるわけです。
バッチもアプリのひとつ #
バッチは実行ファイルの一種なので、CatShanty2の同時起動アプリとして起動できます。
またバッチの中で条件分岐やループも可能なため、上手く使えば1バッチファイルで色々な動作を実行させられます。
CatShanty2の同時起動アプリは2個まで登録できますが、バッチを上手く使うことでそれ以上のアプリを連携して色々な処理を実行することができるわけです。
Alcohol 52% 用マウントバッチを解説 #
それでは、こちらの Alcohol 52% 用CDイメージマウントバッチを例に、実際のバッチで何が行われているか見てみましょう。
このバッチの使い方は
a52mt.bat マウント先ドライブ名 マウントするCDイメージパス
となっていて、ドライブ名とイメージパスの2つの引数を受け取れるようになっています。
|
|
1~10行目 #
|
|
@echo off
とは、この後に実行される命令をコマンドプロンプト画面に表示しないという命令です。@
を付けてecho off
自体も表示されないようにしています。
rem
行は注釈となり、この行に書いた内容は動作に影響を与えません。
バッチ動作を確かめたい時は、
@echo off
の行を除去するか、rem @echo off
として実行結果が見えるようにすると良いでしょう。
12行目 #
|
|
set
は変数に値を定義します。この場合ORG_FN
という変数に%~2
を入れています。
この、%ホニャララ
はバッチファイルに与えられた引数(パラメータ)です。
%~2
の場合は2番めの引数からダブルクオーテーションを除去したものを意味します。
15行目 #
|
|
if
は条件分岐で次の式が成立するとき、その後の命令を実行します。
goto
は指定したラベル行へジャンプする命令です。
つまりこの場合
1番めの引数が空っぽなら、ラベル quit の行へジャンプする
という意味になります。
ジャンプ先であるラベル行は先頭に:
を付けて:quit
のように書きます。
18行目 #
|
|
path
命令は、コマンドプロンプトからプログラムを起動させようとしたとき、コンピューターがそのプログラムを探す場所を指定します。
「パスを通す」などと言います。パスの通っていない場所にあるプログラムはコマンドプロンプトからプログラム名だけで起動することはできません。
また%PATH%
は、既に定義されているパスの内容を意味しますので、つまりこの場合
既に通っているパスに、Alcohl52%のインストールディレクトリを追加する
という意味になります。
Alcohl52% のインストールディレクトリがこの例題バッチの内容と異なる場合はここを書き換えましょう。
21~22行目 #
|
|
echo
の後の文字列はそのまま画面に表示されます。%1
は1番目の引数でしたので、その部分は与えられたドライブ名が表示されます。
AxCmd.exe
はAlcohl52%のインストールディレクトリに存在するコマンドプロンプト用のプログラムです。
続く%1
と/U
はAxCmd.exe
へ渡す引数(パラメータ)です。
つまり
仮想ドライブのマウント先ドライブ名(%1)と アンマウント(取り外し)(/U)を指定して AxCmd.exe を実行する
となります。
ちなみにAxCmd.exe
は18行目で上手くパスが通っていれば実行されますし、パスが通っていなければ次のようなエラーが出て失敗するでしょう。
「‘AxCmd.exe’ は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
バッチの実行内容を確認するときは1行目の
@echo off
を外す事を思い出してください。
25行目 #
|
|
15行目と同じく条件分岐です。
ここではORG_FN
、つまり2番めの引数が空っぽなら、quit
へジャンプします。
定義した変数を使う時は%
で囲んで%ORG_FN%
と記述します。
これにより
2番めの引数が指定されなかった場合は、アンマウントのみ行う
という動作を可能にしています。
29行目 #
|
|
これも22行目と同じで、またAxcmd.exe
を実行しています。
今度は/M
を付けているのでマウント先を指示することになります。
%1
であるドライブ名と、%ORG_FN%
のイメージパスを指定しています。
ダブルクオーテーションを除去したので、"%ORG_FN%"
とダブルクオーテーションで囲んであります。
ダブルクオーテーションを除去した理由は次の通りです。(難しければこの説明はスルーして構いません)
- ユーザーがダブルクオーテーションを付けた場合、付けなかった場合、両方に対応するため
- 25行目で
""
を比較するため
31行目 #
|
|
定義した変数ORG_FN
にサヨナラしています。
変数名の=
後に何も付けないと、変数を開放する意味になります。
33行目 #
|
|
ラベル行です。
この後に何もないので、途中からgoto
でジャンプしてきた場合もここで終了となります。
CatShanty2からバッチを起動する #
さてバッチの準備ができたら、CatShatny2から呼び出してみましょう。
具体的なエミュレータの設定方法例は他のページに用意してありますので、そちらも参照してください。
メニュー→エミュレータ→エミュレータ設定をクリックします。
エミュレータ設定の一覧から、連携させたいエミュレータ設定のダイアログを開きます。
「補助設定2」タブを開いて各項目を以下のように指定します。
起動時に実行する他のアプリケーション #
プログラム1 #
C:\batch\a52mt.bat
作成したa52mt.bat
を指定します。
C:\batch
の部分は自分で保存したa52mt.bat
の場所に書き換えてください。
オプション1 #
P: $image
引数を指定します。
P:
ドライブに$image
をマウントします。
P:
は自分のAlcohl52%で用意した仮想ドライブに書き換えてください。
$image
はCatShatny2の置換定数のひとつです。
CatShanty2が起動しようとしているイメージパスに置き換えられますので、バッチファイルにはCDイメージ等のパスが渡ることになります。
プログラム1の終了を待機 #
チェックをONにして、バッチ処理が終わるまでエミュレータが起動しないようにします。
正常終了以外はエミュレータの起動を中止 #
チェックをONにすれば、万が一バッチが失敗した時にエミュレータが起動しないようにできます。
終了時に実行するアプリケーション #
プログラム1 #
C:\batch\a52mt.bat
ここも同じバッチファイルを指定します。
オプション1 #
P:
今度はドライブ名のみ指定することで、アンマウントのみ行うように指示しています。
復帰遅延(秒) #
2
秒程度を指定するとアンマウント処理とCatShanty2の復帰処理が重なってワタワタせずスッキリした連携に見えます。
まとめ #
以上でバッチファイルの仕組みからCatShanty2との連携まで詳しく解説しました。
バッチは(作者も知識に乏しいうえ)奥が深いですし、CatShanty2の置換定数も色々と用意してあります。
「こんな時、こんな風にエミュレータを起動できたら良いのにな」と思ったらバッチ連携を試してみてください。