Windows 環境でバッチファイルからメッセージボックスを表示して押下されたボタンによって処理を切り替える
- POST
対応方法 バッチファイルからメッセージボックスを表示する場合バッチファイル単体では実現不可のため VBS を使用して実現する
※具体的には、バッチファイルから VBS を呼び出してメッセージボックスを表示し、 VBS から戻り値を受け取り、処理を切り替える
実際のコード @echo off rem メッセージボックスの表示 set msg="メッセージボックスのテスト [\n] で改行します" set title="メッセージボックステスト" for /f "usebackq tokens=* delims=" %%A in (`call cscript //Nologo msgbox.vbs %msg% "%title%"`) do set ret=%%A echo %ret% pause exit Option Explicit rem /******************************************************* rem * msgbox.vbs msg [,title] rem * rem * 引数 rem * msg :表示するメッセージ rem * title :メッセージボックスのタイトル rem * 動作 rem * メッセージボックスを表示し、クリックされたボタンに rem * 対応する数値を返す rem * msg中の 「\n」という文字列は改行に変換する rem * 戻り値 rem * 0:[はい]/1:[いいえ] rem ********************************************************/ Dim args Dim arg(99) Dim value Dim cnt Dim retBtn Dim ret Dim eLevel rem 引数を変数にセット Set args = WScript.Arguments cnt = 0 For Each value In args arg(cnt) = value cnt = cnt + 1 Next rem 改行文字の置換 arg(0) = RepExAll (arg(0), "\\n", VbCrLf) eLevel = 0 retBtn = MsgBox (arg(0), 36, arg(1)) Select Case retBtn Case 6: ret = 0 Case 7: ret = 1 End Select WScript.Echo ret WScript.Quit (eLevel) rem /******************************************************* rem * 文字列を正規表現文字列で検索して、一致する文字列を rem * すべて置換文字列に置換して返す rem * rem * 引数 rem * str1 :置換対象文字列 rem * reg :正規表現文字列 rem * str2 :置換文字列 rem * 戻り値 rem * 置換後の文字列 rem ********************************************************/ Function RepExAll ( str1, reg, str2 ) Dim regExpression Dim Matchers Set regExpression = New RegExp regExpression.Pattern = reg regExpression.IgnoreCase = True regExpression.Global = True RepExAll = regExpression.Replace(str1, str2) End Function