バッチファイルからメッセージボックスを出す方法です。
バッチから PowerShellを呼び出し、そこでメッセージボックスを出します。
実行サンプルです。記事冒頭の画像のメッセージボックスが出ます。
@powershell -Command "Add-Type -AssemblyName System.Windows.Forms;$result = [System.Windows.Forms.MessageBox]::Show(\"メッセージ文1`nメッセージ文2`nメッセージ文3\", 'タイトル', 'YesNoCancel', 'Asterisk');exit $result;" @echo 戻り値は %ERRORLEVEL% です pause
2022.8.10 追記
保存する際、文字コードは ShiftJISにしてください。
または UTF-8で保存する際は、上記の先頭に chcp 65001 >nul を追加してください。
メッセージボックスの表示では、メッセージ文、タイトル、ボタン、アイコンを指定できます。
書式は次のものです。
@powershell -Command "Add-Type -AssemblyName System.Windows.Forms;$result = [System.Windows.Forms.MessageBox]::Show(\"<em>メッセージ文</em>\", '<em>タイトル</em>', '<em>表示するボタン</em>', '<em>表示するアイコン</em>');exit $result;"
メッセージ文 は、\” で括ると、「`n」で改行できます。
表示するボタン は、次の値を指定します。
どのボタンが押されたかは、実行サンプルのようにすると、バッチの %ERRORLEVEL% で取得できます。
指定する値で表示されるボタンと値の関係は、次のようになります。()内が %ERRORLEVEL% の値です。
-
- AbortRetryIgnore
中止(3)
再試行(4)
無視(5)
-
- OK
OK(1)
-
- OKCancel
OK(1)
キャンセル(2)
-
- RetryCancel
再試行(4)
キャンセル(2)
-
- YesNo
はい(6)
いいえ(7)
-
- YesNoCancel
はい(6)
いいえ(7)
キャンセル(2)
表示するアイコン に指定する値と、アイコンは次のようになります。
Asterisk、Information
Error、Hand、Stop
Exclamation、Warning
Question
None
アイコンは表示されません
参考
PowerShellでダイアログを表示し入力結果を取得 | 読書とプログラミングを中心とした覚書ブログ
MessageBoxButtons 列挙型 (System.Windows.Forms)
MessageBoxIcon 列挙型 (System.Windows.Forms)
コメント
実行したらなぜか日本語の部分が文字化けしています。
どうしたらいいですか?
すみません、記事中の説明不足です。
バッチファイルの文字コードは、次のいずれかにする必要があります。
これで試してみてください。
・Shift-JISにする
・UTF-8の場合は、バッチの先頭に chcp 65001 >nul を追加する