バッチファイル(bat)でメッセージボックス「はい」「いいえ」の出力(ポップアップ)を1行で書く方法です。
単体テストでbatファイルを連携させるとき使います。
1 |
ECHO msgbox "メッセージ内容",vbYesNoCancel,"タイトル部分" > %TEMP%/msgboxtest.vbs & %TEMP%/msgboxtest.vbs && ping -n 1 localhost > nul && rm %TEMP%/msgboxtest.vbs |
コマンド解説
長ったらしいコマンドなので、一応解説しておきます。ちょっとしたテクニックもあるので、応用できることがあるかも。
アンパサンド(&)ごとに区切って説明します。
アンパサンドの数について先に説明しておきます。
- & …連続してコマンドを実行する
- && …前のコマンドが成功したら後続のコマンドを実行する
例
前のコマンド & 後続のコマンド
前のコマンド && 後続のコマンド
余談ですが、パイプ|を2つ使うと前のコマンド失敗時、後続のコマンドを実行します。
例)前のコマンド || 後続のコマンド
msgbox用のファイルをVBSで作成
ECHO msgbox "メッセージ内容",vbYesNoCancel,"タイトル部分" > %TEMP%/msgboxtest.vbs &
ECHOはbat標準のコマンド、VBSファイルに書き込み作成するため。
msgboxはVBSのコマンド用。
“メッセージ内容”はポップアップするメッセージの内容。
, vbYesNoCancelは「はい」「いいえ」メッセージとして扱う。ここをはVBSで使うvbInformation, vbExclamation などに変更可。
VBSのmsgbox関数の引数を設定すれば応用可。
作成したmsgboxtest.vbsを実行
%TEMP%/msgboxtest.vbs &&
VBSのプログラムを単体で実行しています。
Wait処理
ping -n 1 localhost > nul &&
%TEMP%/msgboxtest.vbs にファイルが生成されゴミとして残るので、削除したいです。しかし、処理が速すぎて実ファイルの生成が追い付かないことがあります。
そのためのWait処理としてpingを自身に打ち、標準出力されないようnulにリダイレクトします。
msgboxtest.vbsを削除する
rm %TEMP%/msgboxtest.vbs
%TEMP%/msgboxtest.vbsにファイルが残らないよう、削除します。
著作権について
どこかの現場で教わったモノを自分用にカスタマイズしたので、もしかすると元ソースはどこかに転がってるかもしれません。
もし見つけたら教えてください。
当サイトのソースからの流用は商用利用以外著作権フリーで問題ありません。
引用時はリンクを張ってください。