9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

バッチ実行中にメッセージボックスを表示

Last updated at Posted at 2025-03-23

はじめに

導入作業用にファイルコピーやiniファイルを書き換えるバッチを作成しました。
その際により簡易化するため、入力内容も選択メニューにし、番号入力のみにしたうえで担当者に確認してもらったところ、衝撃な一言がありました。
「キーボードが使えないのでマウスの操作だけにしたい」
工場の作業場のPCはマウスしか置いてなく、入力が必要な場合にはキーボードを持参するかリモート接続して操作していたとのことでした。

メッセージボックスを表示

それならば、バッチ実行中にメッセージボックスを表示してマウスで選択するようにすればいいと考え、バッチを作り直しました。

どのボタンが押されたかは、バッチの%ERRORLEVEL%で取得できます。
指定する値で表示されるボタンと値の関係は、次のようになります。
()内が%ERRORLEVEL%の値です。

コマンド ボタン(ERRORLEVELの値)
YesNoCancel はい(6) いいえ(7) キャンセル(2)
YesNo はい(6) いいえ(7)
OK OK(1)
OKCancel OK(1) キャンセル(2)
RetryCancel 再試行(4) キャンセル(2)
AbortRetryIgnore 中止(3) 再試行(4) 無視(5)

VBScript

image.png

@echo off

set caption=タイトル
set message=作業内容を選択してください
set mesYes=【はい 】作業はいの処理内容
set mesNo=【いいえ】作業いいえの処理内容
set mesCancel=【キャンセル】作業終了

echo res = MsgBox("%message%" ^& vbCrLf ^& vbCrLf ^& "%mesYes%" ^& vbCrLf ^& "%mesNo%" ^& vbCrLf ^& "%mesCancel%", vbYesNoCancel, "%caption%"):WScript.Quit(res) > %TEMP%\msgbox.vbs
%TEMP%/msgbox.vbs

rem 6:はい、7:いいえ、2:キャンセル
echo %ERRORLEVEL%

del %TEMP%\msgbox.vbs
pause

PowerShell

image.png

@echo off

set caption=タイトル
set message=作業内容を選択してください
set mesYes=【はい 】作業はいの処理内容
set mesNo=【いいえ】作業いいえの処理内容
set mesCancel=【キャンセル】作業終了

set msgbox="Add-Type -AssemblyName System.Windows.Forms;$result = [System.Windows.Forms.MessageBox]::Show(
set msgbox=%msgbox%\"%message%`n`n%mesYes%`n%mesNo%`n%mesCancel%`n\", '%caption%', 'YesNoCancel', 'Question');Exit $result;"
powershell -ExecutionPolicy RemoteSigned -NoProfile -Command %msgbox%

rem 6:はい、7:いいえ、2:キャンセル
@echo 戻り値は %ERRORLEVEL% です

pause

【2025/03/30追記】
PowerShellのオプション -NoProfile を追加しました。このオプションは、PowerShellの実行時に読み込む環境情報を読み込まないため、起動が多少速くなります。不要な場合は指定しなくてもいいです。

表示するアイコン

表記 コマンド
青い〇内に「i」 Asterisk、Information
赤い〇内に「×」 Error、Hand、Stop
黄色い△内に「!」 Exclamation、Warning
青い〇内に「?」 Question
なし None

最後に

今回のバッチファイルはVBScriptの方で作成しました。この記事を書くためにPowerShellの方法も調べてみたところです。

まだ、VBScriptの方が慣れているので採用してしまうのですが、VBScriptは廃止方向にあるため、PowerShellに切り替えて行かなければいけませんね。

参照

9
10
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?