バッチファイルでメッセージボックスを出す(その2)

スポンサーリンク

バッチファイルからメッセージボックスを出す方法です。
バッチから 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)

コメント

  1. motti より:

    実行したらなぜか日本語の部分が文字化けしています。

    どうしたらいいですか?

  2. パソコン鳥 パソコン鳥 より:

    すみません、記事中の説明不足です。
    バッチファイルの文字コードは、次のいずれかにする必要があります。
    これで試してみてください。
    ・Shift-JISにする
    ・UTF-8の場合は、バッチの先頭に chcp 65001 >nul を追加する

タイトルとURLをコピーしました