対応方法
バッチファイルからメッセージボックスを表示する場合バッチファイル単体では実現不可のため 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