从Windows批处理文件中显示弹出窗口/消息框

169

有没有一种方法可以从批处理文件中显示消息框(类似于Linux中可以从bash脚本中使用xmessage的方式)?


CMD.EXE是一个32位命令处理器,支持DOS命令。 - Alan B
7
它被称为Windows命令提示符。 - Ricardo Polo Jaramillo
23个回答

0

msg * /server:127.0.0.1 在此输入您的消息


Windows cmd.exe 显示:'msg' 不是内部或外部命令,也不是可运行的程序或批处理文件。 - Anthony Hatzopoulos
@AnthonyHatzopoulos 这是因为它只支持XP。 - pattyd
@pattyd XP及以后,实际上 - Jesan Fafon
@JesanFafon 不,它在XP之后就被停用了...我想你是指XP和_更早的版本_。 - pattyd
@pattyd 在Windows 8.1上,where msg返回C:\Windows\System32\msg.exe。我想你在想net send - Jesan Fafon

0

更好的选择

set my_message=Hello world&& start cmd /c "@echo off & mode con cols=15 lines=2 & echo %my_message% & pause>nul"


描述:
lines= 行数+1
cols= 消息中字符的数量+3(但最小必须为15

自动计算 cols 版本:

set my_message=Hello world&& (echo %my_message%>EMPTY_FILE123 && FOR %? IN (EMPTY_FILE123 ) DO SET strlength=%~z? && del EMPTY_FILE123 ) && start cmd /c "@echo off && mode con lines=2 cols=%strlength% && echo %my_message% && pause>nul"


@ender_scythe的注释可以正常工作(start cmd /c "@echo off & mode con cols=18 lines=2 & echo My Popup Message & pause>nul"),而你的则不行。它会输出消息,但无法设置窗口大小,在我的Windows 7上返回“无法将屏幕设置为指定的行数和列数。” - cdlvcdlv
@cdlvcdlv 我已经更新了答案。现在应该对每个人都有效,请进行修订。 - T.Todua
你把一个完好无损的注释搞砸了。然后你试图添加一些价值(我承认这点),但是以失去任何带有不太可能的名称的文件为代价。如果有人(出于好奇)尝试运行你的代码,那么就会永久丢失该文件。此外,如果存在名为“x”的文件夹,则您的命令将失败。不用谢,请修复您的代码。您甚至不需要使用单行代码。如果您认为您的代码很好,请在Code Review上发布它。 - cdlvcdlv
抱歉这条信息分为多部分,但似乎我必须解释一些显而易见的事情。好的,“EMPTY_FILE123”是一个重要文件或文件夹不太可能使用的名称。顺便说一下,你不认识我,请不要把我归为某类人,停止扮演受害者并转移话题(与你不同,我在这里没有情感参与——感恩??)。回到主题,依我之见,你的代码以前很冒险,现在只是懒惰的hack(oms,你自己有25.4k rep)。你想要更合理的批评吗?... - cdlvcdlv
你知道在不创建临时文件的情况下找出字符串的长度并不是一件简单的任务;但你可以(而且应该)制作一个子程序!实际上,将其制作为一行代码毫无意义,因为你必须硬编码消息,那么你为什么需要自动列?你也可以硬编码宽度!你实际上正在使用硬编码消息的一行代码中硬编码文件名,并自动计算列数?!(原始评论只是一个示例,用于展示技术。) - cdlvcdlv
显示剩余4条评论

-3

它只需要在虚拟机内弹出,因此从技术上讲,应该有一些代码像这样:

if %machine_type% == virtual_machine then
   echo message box code
else
   continue normal installation code

如果(%machine_type% == virtual_machine)== true,则会因为安装无法继续而被downvote。 - anion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接