如何直接从 CMD 显示 Msgbox

Bit*_*ita 21 windows command-line vbscript

我想使用 CMD 向用户显示一条消息。我知道这样做的方法是创建一个 .vbs (VBScript) 文件并像这样从 CMD 执行它:

(echo MsgBox "Line 1" ^& vbCrLf ^& "Line 2",262192, "Title")> File.vbs

start File.vbs
Run Code Online (Sandbox Code Playgroud)

但我想要做的是直接从 CMD 显示消息而不创建任何文件。也许通过使用命令直接从 CMD 运行 VBScripts。

I s*_*ica 24

正如@wysiwyg 所建议的,在 Windows 的 Pro/Business 版本* 上,您正在寻找该Msg命令。它适用于所有现代版本的 Windows(至少可以追溯到 XP)。要向当前登录的用户显示消息,请运行以下命令:

msg %username% Your message here
Run Code Online (Sandbox Code Playgroud)

结果如下所示: 在此处输入图片说明

此命令的一个考虑因素是您无法自定义标题栏文本。

您可以在 TechNet 上了解有关 Msg 的更多信息。


*如果您需要一个适用于所有Windows 版本的解决方案,包括 Home,在我看来,您已经知道的 VBScript 方法是解决这个问题的最简单的方法。它适用于所有现代版本和默认配置的 Windows 版本,并且易于使用。


Syb*_*oor 18

正如其他人所说,没有办法完全用 cmd 来做到这一点,但尽管这是问题的标题,但在我看来,没有文件的部分对你来说更重要,在某些情况下这可能是可能的。

使用 powershell 应该可以在没有任何文件的情况下运行代码,如下所示:

PowerShell -Command "Add-Type -AssemblyName PresentationFramework;[System.Windows.MessageBox]::Show('Hello World')"
Run Code Online (Sandbox Code Playgroud)

VBS 不允许通过 cscript 或 wscript 直接执行代码,但 mshta 允许。您可以像这样使用它(如果您需要多行,请使用 ':' 作为分隔符):

mshta vbscript:Execute("msgbox ""Hello World"":close")
Run Code Online (Sandbox Code Playgroud)

因为它是基于 ie 的,所以它可能会受到一些 gpo 限制的影响,所以如果你有选择 powershell 可能是更安全的选择


Cub*_*oft 6

我今天需要类似的东西。由于我不太喜欢 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 端口。zenity 的 Windows 端口大小超过 1MB,因为 GTK 相当臃肿。