ようこそゲストさん

Super Neurotic Junction

2011/12/26(月) batファイルでメッセージを出す方法

2011/12/26 13:45 研究課題snjx
あー。

いまどきの人って、windowsのバッチファイルなんて使うのかしらなどという疑問は置いておいて。

以前に書いたWindowsってsleepコマンドないんだねーの応用編として、バッチファイルからメッセージボックスのポップアップを出す方法をかいておく。

まぁ、簡単な話で、以下のような感じ。
echo msgbox "メッセージよぉん",vbCritical,"タイトルよぉん" > %TEMP%/msgboxtest.vbs & %TEMP%/msgboxtest.vbs
この内容のバッチファイルを作って実行すると、以下のような感じの画面が出てくる。
msgboxtest.PNG

このワンライナーはいろいろ応用が利きそう。

1: 通りすがり 2013年03月06日(水) 午前10時22分

すっげぇΣ(・ω・ノ)ノ
batにたった1行でポップアップが組み込める!
ありがたく使わせていただきます!

2: 企業内システム管理者 2013年04月04日(木) 午後0時11分

まさに探していた例文でした。感謝!

3: snjx URL 2013年04月22日(月) 午後6時49分

あらまぁこんな古いコンテンツへようこそ。
お役に立てればこれ幸い。

…てことは、あれ?batファイルって結構使ってんのかな。

4: ポップマン 2013年07月08日(月) 午後2時58分

デモで「ポップアップが出たら○○する」という条件を作りたくてこちらに辿り着きました。以前までは、バッチ内で"msg"コマンドを使用していたのですが、こちらのほうが見栄えがいいので使わせていただきます(^o^)

5: snjx URL 2013年07月16日(火) 午前11時43分

今年に入ってどうしたことでしょうか。
バッチファイルはやってんの?まじ?

いや、みなさんそんな断りがないと使えないようなたいそうなテクニックではないので好き勝手にコピペしてください。
ま、小さいことでも問題解決の一助にでもなれば。

6: snjx URL 2013年07月16日(火) 午前11時56分

あ、そうだ
このバッチそのまま動かすと、%TEMP%にごみが残るので、そこだけお含み置きくださいな。

7: 西郷 2013年07月17日(水) 午後10時43分

参考にさせて頂きました。
助かりました。

ちなみに作成されたvbsファイルを即デリートさせるのって
ありだと思いますか?
それともそのままTEMPに残しておいた方がいいと思いますか?

8: snjx URL 2013年07月17日(水) 深夜1時46分

コストと内容によってどちらでもお好みで。

もともとバッチファイルなんてアドホックな用途ばっかりなんで、上記例題を書こうと思ったときは、後始末なんて考えていませんでした。
しかし、業務で使用される場合は、実行環境にゴミが残るのはよろしくないという場合もありましょう。その場合は、同じスクリプトの中で用済みのゴミは自分で削除するコードを入れておくのは「あり」だと思います。

9: 西郷 2013年07月18日(木) 午後8時38分

わかりやすい説明ありがとうございました。

10: bbs 2013年12月03日(火) 午後3時18分

バッチでこんなに簡単にメッセージボックス出せるとは思いませんでした!
ありがとうございます。使わせていただきます。

11: patchman 2013年12月12日(木) 午後2時45分

batで強制的に稼働中のプロセスをKillっているbatがあるのですが、何もメッセージなしで使っているので、メッセージが出ればなと思い、ここへ来ました。分かりやすい説明ありがとうございます。

12: mize 2014年10月15日(水) 午後3時26分

感動です。使わせていただきます。ありがとうございます。

13: よっちゃん 2015年01月14日(水) 深夜1時58分

すげー

14: dada 2015年03月05日(木) 午後4時20分

参考にさせて頂きます。ありがとうございました。

15: gakke 2015年05月31日(日) 午後2時41分

やっと見付けました。。。(^o^)

16: けんし 2015年07月25日(土) 午後2時53分

とても助かりますた

17: かな 2015年08月08日(土) 午前9時36分

ありがとうございます。使わせて頂きます(^○^)

18: hacker(仮) 2015年10月03日(土) 午後5時01分

ありがとうございます!
ってかbat流行ってんのかな?

19: ゆうた 2015年10月11日(日) 午後9時53分

たどり着きました...ありがたく使わせて頂きます。

20: ぷげら 2015年10月23日(金) 午後6時06分

メッセージの改行どうしたらいいでしょう
"はてな"&vbCr&"はてな"としましたがだめでした

21: ぷげら 2015年10月23日(金) 午後6時06分

メッセージの改行どうしたらいいでしょう
"はてな"&vbCr&"はてな"としましたがだめでした

22: ぷげら 2015年10月24日(土) 午前11時48分

&じゃなくて+でだきますた

23: snjx 2015年10月28日(水) 午後2時07分

ぷげらさん、すみませんめったに自分のとこ見に来ないので見逃していました。
自己解決なさったようで何よりでした。

24: ・w・ URL 2016年05月10日(火) 午前10時37分

@if(0)==(0) ECHO OFF
echo ■BATによる前処理です。■
cscript.exe //nologo //E:JScript "%~f0" %*
echo ■BATによる後処理です。■
@pause
GOTO :EOF
@end

WScript.echo("■WSHによる処理です。■");
=========================
このようにすれば、WSH/JScriptコード※VBSではありません。
をインクルード可能です。

引用元:BATとWSHのコードを1ファイルに混在させるためのshebang記法(複雑なバッチを1ファイルで実現)

メッセージボックスの命令文は
WScript.CreateObject("WScript.Shell").Popup("メッセージよぉん",0,"タイトルよぉん", 0 + 16)
です。詳しくはURL参照

25: snjx 2016年05月16日(月) 午前11時27分

おーなるほど、batファイルの中でcscriptを読んじゃうわけですね。
これは面白い。
http://computer-technology.hateblo.jp/entry/20131025/p1

ただ、ここまでくると素直にvbsかjsで作っちゃったほうがいいと思うけど…
レガシーのbatファイルがたくさんあってメンテしなきゃならない時には有効ですね。

26: 通りすがり 2016年07月29日(金) 午後0時01分

なるほど、ありがとうございました!

…だけでは何なので、ご参考まで

バッチファイルのエスケープはハットです.>20さん、見てるかな?
"はてな" ^& vbCrLf ^& "はてな"
でいけるハズ

それと、echo msgbox ... > ... の代わりに、
echo WScript.Quit(MsgBox(...)) > ... とやると、
%ERRORLEVEL%で分岐ができますね
ただし、7さんのような用途で、& %TEMP%... まで1行につなげてしまうと、
%ERRORLEVEL% は del の結果となってしまうので注意です
(ハマりました)

27: Uk45.ckw 2016年08月03日(水) 午前10時42分

お、おお(感激
友達に送るウイrいやいやメッセージのために使わせていただきますw

28: snjx 2016年08月10日(水) 午前11時11分

…なぜ、この記事だけこんなに伸びてるんだろう。

29: 通行人 2016年09月16日(金) 午後5時18分

ありがたやありがたや
使わせていただきます!

30: すげー 2016年09月26日(月) 午後3時07分

汎用性すげー
いただき!

31: ありがたい 2016年10月25日(火) 午後6時32分

いただきまーす
thx!


名前:  非公開コメント   

E-Mail(任意/非公開):
URL(任意):
  • TB-URL  http://snjx.info/diary/snjx/049/tb/