CMDを使用してユーザーにメッセージを表示したいです。私が知っている方法は、.vbs(VBScript)ファイルを作成してCMDから次のように実行することです。
(echo MsgBox "Line 1" ^& vbCrLf ^& "Line 2",262192, "Title")> File.vbs
start File.vbs
しかし、私がしたいのは、CMDから直接ファイルを作成せずにメッセージを表示することです。たぶんコマンドを使ってVBScriptをCMDから実行します。
@wysiwygが示唆しているように、WindowsのPro/Businessバージョン*ではMsg
コマンドを探しています。最新バージョンのWindowsすべて(少なくともXP以前のバージョン)で使用可能です。現在ログオンしているユーザーにメッセージを表示するには、次のコマンドを実行します。
msg %username% Your message here
このコマンドに関する1つの考慮事項は、タイトルバーのテキストをカスタマイズできないことです。
Msg TechNet について、さらに学ぶことができます。
*もしあなたがallエディションのWindows、Homeを含む)に対してうまくいく解決策が必要なら、あなたがすでに知っているVBScriptの方法がこの問題に対する最も簡単な解決策である。 Windowsのバージョンとエディションはデフォルトの設定であり、使いやすいです。
他の人がcmdを使ってこれを行う方法は全くないと言っていましたが、それが質問の題名ですが、ファイルのない部分ははあなたにとってより重要であり、特定の状況下ではこれは可能かもしれません。
PowerShellを使用すると、このようなファイルなしでコードを実行することが可能になります。
PowerShell -Command "Add-Type -AssemblyName PresentationFramew
ork;[System.Windows.MessageBox]::Show('Hello World')"
VBSは、cscriptまたはwscriptを介したコードの直接実行を許可しませんが、mshtaは許可します。あなたはこのようにそれを使うことができます(あなたが複数の行を必要とするならば、区切り文字として ':'を使います):
mshta vbscript:Execute("msgbox ""Hello World"":close")
それがベースであるようにそれはいくつかのgpo制限によって影響されるかもしれないのであなたが選択を持っているならパワーシェルはおそらくより安全な賭けです
私は今日これに似たものが必要でした。私はVBScript/Powershellのファンではないので私が好む外部依存関係の解決策を見つけることができなかったので、私は先に行き、それを書きました:
https://github.com/cubiclesoft/messagebox-windows
表示されるメッセージボックスは、現在のコンソールウィンドウに対してモーダルです。つまり、ユーザーはダイアログを閉じるまで何もできません。また、MessageBox()
呼び出しからの戻りコードは、スクリプトがどのボタンが押されたかに反応することができるように呼び出し側に返されます。そしてもちろん、それはMessageBox()
Win32 APIの全範囲のオプションをサポートします。
80KBの実行ファイルをミックスに追加しても、みんなのお茶になるわけではありません。ただし、それはVC++ランタイムと静的にリンクされており、Unicodeをサポートしています。これは、ファイルのサイズが最小であるという理由から、なぜファイルが非常に大きいのかを説明しています。また、複数行のメッセージを表示するためにコマンドラインから簡単に改行を渡すことができないという小さな問題があります。マイナーな面では、これまでに提示された他のどのソリューションよりも短い実時間でダイアログが表示されます。
もちろん、ファイルサイズが問題にならず、ダイアログがあまりにも「あなたの顔」のユーザエクスペリエンスを生み出したり、ユーザインタラクションを必要としない場合、私はまたこの気の利いたプロジェクトに遭遇しました:
https://www.paralint.com/projects/notifu/
IUserNotification を使用して、画面のステータス通知領域にポップアップバルーンを表示します。欠点は、Notifuの実行ファイルが240KBしかないことです。 COMが不要な肥大化を引き起こし、その機能のためのシンプルで軽量なAPIがあったことを私は望んでいます。
クロスプラットフォームのものには、善意があります。これはほとんどLinux用ですが、MacとWindowsへの移植もあります。 GTKはかなり肥大化しているので、zenityのWindowsポートは1MB以上のサイズです。
さらに、外部(Windows以外)の実行可能ファイルでは、
nircmd infobox "msg" "title"
あなたがvb6コンパイラにアクセスできるなら、この「1ライナー」は5.5kの実行可能ファイルを生成します:
sub main
msgbox command
end sub
私はcmdでこれを行う方法がありますが、それは基本的にファイルを含みますが、ファイルはvbsが実行された後すぐに削除されます。そうではありません。できるよ :
echo x=msgbox("Hey! Here is a message!",Type+Icon+Action,"Hey! Here is a title!") > %tmp%\tmp.vbs
cscript //nologo %tmp%\tmp.vbs
del %tmp%\tmp.vbs
Type + Icon + Actionは単なる基本的なVBSです。 https://therevisionist.org/wp-content/uploads/2016/03/vbscript_msgbox_chart-e1458059002411.jpg?x47750 作成したコードはあなたが作るものですVBSコードが含まれているファイルは、cscriptを使用して実行されます。その後、実行後にファイルが削除され、cmdプロンプトによって呼び出されたように見えます。もっと見た目にするには、@echo offを使用してください。これが役に立ったことを願っています!