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


Answers:


121

我将制作一个非常简单的VBScript文件,并使用CScript调用它来解析命令行参数。

类似于以下内容的文件保存在MessageBox.vbs

Set objArgs = WScript.Arguments
messageText = objArgs(0)
MsgBox messageText

您会这​​样称呼:

cscript MessageBox.vbs "This will be shown in a popup."

MsgBox如果您对此路线感兴趣,请参考


谢谢那样做,会创建一个文件,然后向其中写入数据,然后使用它,而不是删除它。应该可以正常工作:)
Billyy

1
好答案。这样,您可以完全控制图标,按钮和框标题。同样,当您将文件保存在PATH的某个位置时,可以从任何位置调用它。我创建了几个带有不同图标的警报文件。
Deus777 '16

真好 顺便说一句,至少在Win10中,您不需要使用CScript。使用CScript,我在命令提示符中获得了一些其他文本。没有CScript,只有警报,这是很棒的
神的孩子

我没有cscript。我改用start。
sureshvv

127

首先,DOS与它无关,您可能需要Windows命令行解决方案(再次:无DOS,纯Windows,不是窗口,而是控制台)。

您可以使用boflynn提供的VBScript方法,也可以误用net sendmsgnet send仅适用于旧版Windows:

net send localhost Some message to display

但是,这也取决于Messenger服务的运行。

对于较新的版本(显然是XP及更高版本):

msg "%username%" Some message to display

请注意,使用发送的消息框msg.exe仅持续60秒。但是,可以使用/time:xx开关覆盖它。


2
您可以使用env变量来获取本地用户-%USERNAME%。msg.exe在我的XP Home机器上,但是我听到一些传闻说它不在所有版本的Vista上。我相信这些天NET SEND背后的服务已被禁用。
McDowell

是的,谢谢,忘记了envvar(很少使用%UserProfile%和我自己定义的批处理之外的任何东西:)。有趣的是,您对Messenger服务的看法是正确的。它甚至在我的XP VM上都不存在,但是网络发送仍然存在。msg.exe在那里工作,但是。
乔伊(Joey)

18
我认为答案中缺少一个可行的选择,并提供了它。没错 您既不需要感到被迫做某事,也不必以某种方式说boflynn是错的。我只是添加了另一个选项,对于没有单个确定答案的问题,它应该是非常好的选择。此外,您可能不是唯一一个遇到此问题的人,而出于某些原因,其他人可能不想使用VBScript。这是一个社区网站,不仅仅是您的社区网站:-)
Joey

8
我自己只是用它从远程外壳在女友的PC上生成“我爱你”消息。
卡米洛·马丁

1
在Windows 8和10上,我发现Windows版本很重要。对我来说,它适用于专业人士,但不适用于家庭。其他人报告说它可以在Home Premium和Enterprise,Ultimate等系统上运行。似乎普通的旧房屋无法使用它(System32中不存在,但可以添加)。
shox

84

可能会显示一点闪光,但不需要临时文件。应该一直工作到(IIRC)IE5时代的某个地方。

mshta javascript:alert("Message\n\nMultiple\nLines\ntoo!");close();

如果您正在使用,不要忘了括号if

if 1 == 1 (
   mshta javascript:alert^("1 is equal to 1, amazing."^);close^(^);
)

这在命令提示符下可以完美运行,但是当我将其粘贴到批处理文件中时,出现此错误:close() was unexpected at this time
eye_mew 2014年

@eye_mew也许您需要删除^蝙蝠文件中的那些转义字符
phuclv 2015年

1
从批处理文件(我在Windows 7上)中,它对我来说非常理想。我们可以这样运行任何Javascript吗?我们如何将值返回到批处理文件?
杰里·耶利米

1
以下是一些您可以做的令人惊奇的示例:dostips.com/forum/viewtopic.php?t=5311 LocalDateTime示例返回一个值。谢谢你的主意!
杰里·耶利米

在服务器端JavaScript尚未流行之前,Microsoft推出了不错的node.js,这对他们来说是一个错失的机会。
Daniel Sokolowski

76

这将弹出另一个命令提示符窗口:

START CMD /C "ECHO My Popup Message && PAUSE"

1
真棒!我可能会在其他一些脚本中使用它:)
Billyy

3
更好的选择是:start cmd /c "@echo off & mode con cols=18 lines=2 & echo My Popup Message & pause>nul"将更cols=18改为message + 2中的字符数。并且lines=2无论行数是+1。
ender_scythe

1
摆脱暂停和使用cmd /k
Artelius

34

尝试:

Msg * "insert your message here" 

如果您使用的是Windows XP的command.com,将打开一个消息框。

我搜集到,打开一个新的cmd窗口并不是您所要的。您也可以使用VBScript,并将其与.bat文件一起使用。您可以使用以下命令从bat文件中打开它:

cd C:\"location of vbscript"

这样做是更改目录command.com将在其中搜索文件,然后在下一行:

"insert name of your vbscript here".vbs

然后创建一个新的记事本文档,输入

<script type="text/vbscript">
    MsgBox "your text here"
</script>

然后,您可以将其另存为.vbs文件(通过在文件名的末尾添加“ .vbs”),在文件名下方的下拉框中另存为“所有文件”(这样就不会另存为.txt) ),然后点击保存!


3
您不需要<script/>标签。
surfasb

使用-> MSG * <text>
ZEE

@ZEE如果仅使用msg *,将提示您输入消息,然后按ctrl-Z。您可以在此处输入将出现在消息中的换行符。
User5910

30

很少的其他方法。

1)最怪异,最讨厌-它使用IEXPRESS创建小型exe文件,该文件将通过一个按钮创建弹出窗口(它可以创建两种以上的弹出消息)。适用于XP及以上版本的每个窗口:

;@echo off
;setlocal

;set ppopup_executable=popupe.exe
;set "message2=click OK to continue"
;
;del /q /f %tmp%\yes >nul 2>&1
;
;copy /y "%~f0" "%temp%\popup.sed" >nul 2>&1

;(echo(FinishMessage=%message2%)>>"%temp%\popup.sed";
;(echo(TargetName=%cd%\%ppopup_executable%)>>"%temp%\popup.sed";
;(echo(FriendlyName=%message1_title%)>>"%temp%\popup.sed"
;
;iexpress /n /q /m %temp%\popup.sed
;%ppopup_executable%
;rem del /q /f %ppopup_executable% >nul 2>&1

;pause

;endlocal
;exit /b 0


[Version]
Class=IEXPRESS
SEDVersion=3
[Options]
PackagePurpose=InstallApp
ShowInstallProgramWindow=1
HideExtractAnimation=1
UseLongFileName=0
InsideCompressed=0
CAB_FixedSize=0
CAB_ResvCodeSigning=0
RebootMode=N
InstallPrompt=%InstallPrompt%
DisplayLicense=%DisplayLicense%
FinishMessage=%FinishMessage%
TargetName=%TargetName%
FriendlyName=%FriendlyName%
AppLaunched=%AppLaunched%
PostInstallCmd=%PostInstallCmd%
AdminQuietInstCmd=%AdminQuietInstCmd%
UserQuietInstCmd=%UserQuietInstCmd%
SourceFiles=SourceFiles
[SourceFiles]
SourceFiles0=C:\Windows\System32\
[SourceFiles0]
%FILE0%=


[Strings]
AppLaunched=subst.exe
PostInstallCmd=<None>
AdminQuietInstCmd=
UserQuietInstCmd=
FILE0="subst.exe"
DisplayLicense=
InstallPrompt=

2)使用MSHTA。也可以在XP及更高版本的每台Windows机器上运行(尽管OP不想使用“外部”语言,但此处的JavaScript最小化了)。应另存为.bat

@if (true == false) @end /*!
@echo off
mshta "about:<script src='file://%~f0'></script><script>close()</script>" %*
goto :EOF */

alert("Hello, world!");

或一行:

mshta "about:<script>alert('Hello, world!');close()</script>"

要么

mshta "javascript:alert('message');close()"

要么

mshta.exe vbscript:Execute("msgbox ""message"",0,""title"":close")

3)这是参数.bat/jscript化的Hybrid(应另存为bat)。尽管有OP请求,它仍然使用JavaScript,但由于它是蝙蝠,因此可以毫无疑问地称为bat文件。它使用POPUP,它比更流行的MSGBOX允许更多的控制。它使用WSH,但不像上面的示例那样使用MSHTA。

 @if (@x)==(@y) @end /***** jscript comment ******
     @echo off

     cscript //E:JScript //nologo "%~f0" "%~nx0" %*
     exit /b 0

 @if (@x)==(@y) @end ******  end comment *********/


var wshShell = WScript.CreateObject("WScript.Shell");
var args=WScript.Arguments;
var title=args.Item(0);

var timeout=-1;
var pressed_message="button pressed";
var timeout_message="timed out";
var message="";

function printHelp() {
    WScript.Echo(title + "[-title Title] [-timeout m] [-tom \"Time-out message\"] [-pbm \"Pressed button message\"]  [-message \"pop-up message\"]");
}

if (WScript.Arguments.Length==1){
    runPopup();
    WScript.Quit(0);
}

if (args.Item(1).toLowerCase() == "-help" || args.Item(1).toLowerCase() == "-h" ) {
    printHelp();
    WScript.Quit(0);
}

if (WScript.Arguments.Length % 2 == 0 ) {
    WScript.Echo("Illegal arguments ");
    printHelp();
    WScript.Quit(1);
}

for (var arg = 1 ; arg<args.Length;arg=arg+2) {

    if (args.Item(arg).toLowerCase() == "-title") {
        title = args.Item(arg+1);
    }

    if (args.Item(arg).toLowerCase() == "-timeout") {
        timeout = parseInt(args.Item(arg+1));
        if (isNaN(timeout)) {
            timeout=-1;
        }
    }

    if (args.Item(arg).toLowerCase() == "-tom") {
        timeout_message = args.Item(arg+1);
    }

    if (args.Item(arg).toLowerCase() == "-pbm") {
        pressed_message = args.Item(arg+1);
    }

    if (args.Item(arg).toLowerCase() == "-message") {
        message = args.Item(arg+1);
    }
}

function runPopup(){
    var btn = wshShell.Popup(message, timeout, title, 0x0 + 0x10);

    switch(btn) {
        // button pressed.
        case 1:
            WScript.Echo(pressed_message);
            break;

        // Timed out.
        case -1:
           WScript.Echo(timeout_message);
           break;
    }
}

runPopup();

4)和一个 jscript.net/.bat混合文件(应另存为.bat)。这一次它使用.NET并编译了一个.exe可以删除的小文件:

@if (@X)==(@Y) @end /****** silent jscript comment ******

@echo off
::::::::::::::::::::::::::::::::::::
:::       compile the script    ::::
::::::::::::::::::::::::::::::::::::
setlocal


::if exist "%~n0.exe" goto :skip_compilation

:: searching the latest installed .net framework
for /f "tokens=* delims=" %%v in ('dir /b /s /a:d /o:-n "%SystemRoot%\Microsoft.NET\Framework\v*"') do (
    if exist "%%v\jsc.exe" (
        rem :: the javascript.net compiler
        set "jsc=%%~dpsnfxv\jsc.exe"
        goto :break_loop
    )
)
echo jsc.exe not found && exit /b 0
:break_loop



call %jsc% /nologo /out:"%~n0.exe" "%~f0" 
::::::::::::::::::::::::::::::::::::
:::       end of compilation    ::::
::::::::::::::::::::::::::::::::::::
:skip_compilation

::
::::::::::
"%~n0.exe" %*
::::::::
::
endlocal
exit /b 0

****** end of jscript comment ******/

import System;
import System.Windows;
import System.Windows.Forms

var arguments:String[] = Environment.GetCommandLineArgs();
MessageBox.Show(arguments[1],arguments[0]);

5),最后一次调用powershell会创建一个弹出窗口(可以从命令行或从批处理中调用(如果已安装powershell):

powershell [Reflection.Assembly]::LoadWithPartialName("""System.Windows.Forms""");[Windows.Forms.MessageBox]::show("""Hello World""", """My PopUp Message Box""")

6) dbenham的方法在这里

start "" cmd /c "echo(&echo(&echo              Hello world!     &echo(&pause>nul"

7)对于系统托盘通知,您可以尝试以下操作

call SystemTrayNotification.bat  -tooltip warning -time 3000 -title "Woow" -text "Boom" -icon question

29

这样,您的批处理文件将创建一个VBS脚本并显示一个弹出窗口。运行后,批处理文件将删除该中间文件。

使用MSGBOX的优点是它确实可自定义(更改标题,图标等),而MSG.exe却不那么可定制。

echo MSGBOX "YOUR MESSAGE" > %temp%\TEMPmessage.vbs
call %temp%\TEMPmessage.vbs
del %temp%\TEMPmessage.vbs /f /q

15

这是一个PowerShell变体,不需要在创建窗口之前加载程序集,但是它的运行速度比@npocmaka在此处发布的PowerShell MessageBox命令要慢得多(〜+ 50%):

powershell (New-Object -ComObject Wscript.Shell).Popup("""Operation Completed""",0,"""Done""",0x0)

您可以将最后一个参数从“ 0x0”更改为以下值,以在对话框中显示图标(有关更多参考,请参见弹出方法):

        停止0x10停止
        问号0x20问号
        感叹号0x30感叹号
        信息标记0x40信息标记

改编自Microsoft TechNet文章PowerTip:使用PowerShell显示弹出窗口


10
echo X=MsgBox("Message Description",0+16,"Title") >msg.vbs

–您可以写0、1、2、3、4中的任何数字,而不是0(在'+'符号之前),这是每个数字的含义:

0 = Ok Button  
1 = Ok/Cancel Button  
2 = Abort/Retry/Ignore button  
3 = Yes/No/Cancel  
4 = Yes/No  

–您可以写出16、32、48、64中的任何数字,而不是16(在“ +”符号之后),这是每个数字的含义:

16 – Critical Icon  
32 – Warning Icon  
48 – Warning Message Icon   
64 – Information Icon  

2
您如何从VB脚本获得响应?
Suit Boy Apps

7

消息*“在此处插入您的消息”

可以正常工作,只需将其另存为.bat文件在记事本中,或确保将格式设置为“所有文件”


文档说“ *”将“发送消息到指定服务器上的所有会话”,即。将中断终端服务或快速切换用户
Fowl

2
您可以使用msg %SESSIONNAME% msg
Fowl 2014年

5
msg * /time:0 /w Hello everybody!

此消息将一直等待,直到单击“确定”为止(默认情况下仅持续一分钟),并且在Windows 8.1中可以正常工作


自2009
7

糟糕> _ <请删除它:)
MoE bis

?如何在文本中插入换行(空白行)
ZEE

3
msg * /time:0 /w <C:\Somewhere\Message.txt文件中的普通文本(包含CrLf)。
MoEbis 2013年

4

为此,您需要有一个显示消息框并从批处理文件运行该消息框的小程序。

您可以打开一个显示提示的控制台窗口,但是仅使用cmd.exe和朋友才能获得GUI消息框,AFAIK。


可能会提示...您还有其他相关信息吗?
Billyy

1
echo“ xx”,暂停或设置/ p var = prompt是cmd.exe选项
Macke,

@ nickl-:这样更好吗?
Macke

3

我从这里使用名为msgbox.exe的实用程序:http : //www.paulsadowski.com/WSH/cmdprogs.htm


根据Symantec Antivirus的说明,此存档包含木马。
大卫,

3
@David-我有批处理文件和文本文件被防病毒软件标记为敌对。实际上,我让AVG防病毒软件捕获了命令行指令,并声称这是一种病毒。
詹姆斯·K

2
FWIW Virus Total说11/51病毒检查程序检测到该文件上的病毒:virustotal.com/en/file/…–
马修·洛克

3

您可以使用Zenity。Zenity允许在命令行和Shell脚本中执行对话框。更多信息也可以在Wikipedia上找到。

它是跨平台的:可在此处找到Windows的Windows安装程序。


3

遵循@Fowl的答案,您可以使用以下方法将超时时间改善为仅显示10秒钟:

mshta "javascript:var sh=new ActiveXObject( 'WScript.Shell' ); sh.Popup( 'Message!', 10, 'Title!', 64 );close()"

有关更多详细信息,请参见此处


被检测为xD病毒
Julien

2

您可以从user32.dll调用dll函数,我认为

Rundll32.exe user32.dll,MessageBox(0,“文本”,“ titleText”,{最顶部消息框的额外标志等})

从我的手机中输入内容,不要判断我...否则我会链接额外的标志。


rundll32.exe user32.dll,MessageBoxA X在“运行”框中执行该操作时,可以显示一个标题为X的消息框。不管我使X是什么,我都无法将其解释为多个参数-所有内容都包含在标题中。因此,rundll32.exe user32.dll,MessageBoxA (0, "MyTitle", "MyText", 0)显示一个标题为的消息框,(0, "MyTitle", "MyText", 0) 但我无法从命令行-仅从运行框中获取它。在命令行上,它什么也不做。它是否可以从命令行或批处理文件或仅从“运行”框中确定起作用?
杰里·耶利米

每个文档的 rundll32.exe 只能运行专门为此目的设计的那些程序,因为它们必须解析“可选参数”部分。并非以这种方式设计MessageBox式的功能。为什么通过Win + R(运行框)运行,这仍然是一个大问题!
尤里·波兹尼亚克

1

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


Windows cmd.exe说:“ msg”未被识别为内部或外部命令,可操作程序或批处理文件。
安东尼·哈佐普洛斯

@AnthonyHatzopoulos,因为仅在XP中受支持
pattyd

@pattyd XP及更高版本,实际上
Jesan Fafon 2014年

@JesanFafon不,它在XP之后停止使用...我想你的意思是XP和更早版本
pattyd 2014年

@pattyd在Windows 8.1上,where msg返回C:\Windows\System32\msg.exe。我认为您正在考虑net send
Jesan Fafon 2014年

1

如果您将批处理文件转换(包装)为可执行文件,则此应用程序可以执行此操作。


  1. 简单消息框

    %extd% /messagebox Title Text
    

  1. 错误消息框

    %extd% /messagebox  Error "Error message" 16
    
  2. 取消重试消息框

    %extd% /messagebox Title "Try again or Cancel" 5
    

4)“不再询问我”消息框

%extd% /messageboxcheck Title Message 0 {73E8105A-7AD2-4335-B694-94F837A38E79}

0

更好的选择

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


描述:
lines= 行数,加上
cols= 消息中的1 个字符,再加上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")。你的不是。它回显该消息,但无法设置The screen cannot be set to the number of lines and columns specified.至少在我的Windows 7中返回的窗口大小
。– cdlvcdlv

@cdlvcdlv我已经更新了答案。它现在应该对每个人都有效,对其进行修订。
T.Todua

如果x当前目录中没有命名文件,或者您不介意丢失文件,它确实可以工作。
cdlvcdlv

您做出了完美的工作评论,并将其破坏了。然后,您尝试添加一些值(我将为您提供),但代价是丢失名称不太常见的任何文件。如果某人(出于好奇)尝试了您的代码,但运气不好,它将永久丢失该文件。此外,如果存在名为的文件夹x,则命令将失败。不用谢,请修复您的代码。您甚至不需要使用单线。而且,如果您认为自己的代码很好,请将其发布在Code Review中
cdlvcdlv

真是太不客气了。。。祝你好运
T.Todua

0

这是我在此处和其他帖子中给出的良好答案所组成的批处理脚本

您可以设置标题超时,甚至可以休眠以将其排在后面,而\ n可以安排在新行

将其命名为popup.bat并将其放在Windows路径文件夹中以在PC上全局工作

例如popup Line 1\nLine 2将产生一个2行弹出框(popup /?使用类型)

这是代码

<!-- : Begin CMD
@echo off
cscript //nologo "%~f0?.wsf" %*
set pop.key=[%errorlevel%]
if %pop.key% == [-1] set pop.key=TimedOut
if %pop.key% == [1]  set pop.key=Ok
if %pop.key% == [2]  set pop.key=Cancel
if %pop.key% == [3]  set pop.key=Abort
if %pop.key% == [4]  set pop.key=Retry
if %pop.key% == [5]  set pop.key=Ignore
if %pop.key% == [6]  set pop.key=Yes
if %pop.key% == [7]  set pop.key=No
if %pop.key% == [10] set pop.key=TryAgain
if %pop.key% == [11] set pop.key=Continue
if %pop.key% == [99] set pop.key=NoWait
exit /b 
-- End CMD -->

<job><script language="VBScript">
'on error resume next
q   =""""
qsq =""" """
Set objArgs = WScript.Arguments
Set objShell= WScript.CreateObject("WScript.Shell")
Popup       =   0
Title       =   "Popup"
Timeout     =   0
Mode        =   0
Message     =   ""
Sleep       =   0
button      =   0
If objArgs.Count = 0 Then 
    Usage()
ElseIf objArgs(0) = "/?" or Lcase(objArgs(0)) = "-h" or Lcase(objArgs(0)) = "--help" Then 
    Usage()
End If
noWait = Not wait() 
For Each arg in objArgs
    If (Mid(arg,1,1) = "/") and (InStr(arg,":") <> 0) Then haveSwitch   =   True
Next
If not haveSwitch Then 
    Message=joinParam("woq")
Else
    For i = 0 To objArgs.Count-1 
        If IsSwitch(objArgs(i)) Then 
            S=split(objArgs(i) , ":" , 2)
                select case Lcase(S(0))
                    case "/m","/message"
                        Message=S(1)
                    case "/tt","/title"
                        Title=S(1)
                    case "/s","/sleep"
                        If IsNumeric(S(1)) Then Sleep=S(1)*1000
                    case "/t","/time"
                        If IsNumeric(S(1)) Then Timeout=S(1)
                    case "/b","/button"
                        select case S(1)
                            case "oc", "1"
                                button=1
                            case "ari","2"
                                button=2
                            case "ync","3"
                                button=3
                            case "yn", "4"
                                button=4
                            case "rc", "5"
                                button=5
                            case "ctc","6"
                                button=6
                            case Else
                                button=0
                        end select
                    case "/i","/icon"
                        select case S(1)
                            case "s","x","stop","16"
                                Mode=16
                            case "?","q","question","32"
                                Mode=32
                            case "!","w","warning","exclamation","48"
                                Mode=48
                            case "i","information","info","64"
                                Mode=64
                            case Else 
                                Mode=0
                        end select
                end select
        End If
    Next
End If
Message = Replace(Message,"/\n", "°"  )
Message = Replace(Message,"\n",vbCrLf)
Message = Replace(Message, "°" , "\n")
If noWait Then button=0

Wscript.Sleep(sleep)
Popup   = objShell.Popup(Message, Timeout, Title, button + Mode + vbSystemModal)
Wscript.Quit Popup

Function IsSwitch(Val)
    IsSwitch        = False
    If Mid(Val,1,1) = "/" Then
        For ii = 3 To 9 
            If Mid(Val,ii,1)    = ":" Then IsSwitch = True
        Next
    End If
End Function

Function joinParam(quotes)
    ReDim ArgArr(objArgs.Count-1)
    For i = 0 To objArgs.Count-1 
        If quotes = "wq" Then 
            ArgArr(i) = q & objArgs(i) & q 
        Else
            ArgArr(i) =     objArgs(i)
        End If
    Next
    joinParam = Join(ArgArr)
End Function

Function wait()
    wait=True
    If objArgs.Named.Exists("NewProcess") Then
        wait=False
        Exit Function
    ElseIf objArgs.Named.Exists("NW") or objArgs.Named.Exists("NoWait") Then
        objShell.Exec q & WScript.FullName & qsq & WScript.ScriptFullName & q & " /NewProcess: " & joinParam("wq") 
        WScript.Quit 99
    End If
End Function

Function Usage()
    Wscript.Echo _
                     vbCrLf&"Usage:" _
                    &vbCrLf&"      popup followed by your message. Example: ""popup First line\nescaped /\n\nSecond line"" " _
                    &vbCrLf&"      To triger a new line use ""\n"" within the msg string [to escape enter ""/"" before ""\n""]" _
                    &vbCrLf&"" _
                    &vbCrLf&"Advanced user" _
                    &vbCrLf&"      If any Switch is used then you must use the /m: switch for the message " _
                    &vbCrLf&"      No space allowed between the switch & the value " _
                    &vbCrLf&"      The switches are NOT case sensitive " _
                    &vbCrLf&"" _
                    &vbCrLf&"      popup [/m:""*""] [/t:*] [/tt:*] [/s:*] [/nw] [/i:*]" _
                    &vbCrLf&"" _
                    &vbCrLf&"      Switch       | value |Description" _
                    &vbCrLf&"      -----------------------------------------------------------------------" _
                    &vbCrLf&"      /m: /message:| ""1 2"" |if the message have spaces you need to quote it " _
                    &vbCrLf&"                   |       |" _
                    &vbCrLf&"      /t: /time:   | nn    |Duration of the popup for n seconds " _
                    &vbCrLf&"                   |       |<Default> untill key pressed" _
                    &vbCrLf&"                   |       |" _
                    &vbCrLf&"      /tt: /title: | ""A B"" |if the title have spaces you need to quote it " _
                    &vbCrLf&"                   |       | <Default> Popup" _
                    &vbCrLf&"                   |       |" _
                    &vbCrLf&"      /s: /sleep:  | nn    |schedule the popup after n seconds " _
                    &vbCrLf&"                   |       |" _
                    &vbCrLf&"      /nw /NoWait  |       |Continue script without the user pressing ok - " _
                    &vbCrLf&"                   |       | botton option will be defaulted to OK button " _
                    &vbCrLf&"                   |       |" _
                    &vbCrLf&"      /i: /icon:   | ?/q   |[question mark]"  _
                    &vbCrLf&"                   | !/w   |[exclamation (warning) mark]"  _
                    &vbCrLf&"                   | i/info|[information mark]"  _
                    &vbCrLf&"                   | x/stop|[stop\error mark]" _
                    &vbCrLf&"                   | n/none|<Default>" _
                    &vbCrLf&"                   |       |" _
                    &vbCrLf&"      /b: /button: | o     |[OK button] <Default>"  _
                    &vbCrLf&"                   | oc    |[OK and Cancel buttons]"  _
                    &vbCrLf&"                   | ari   |[Abort, Retry, and Ignore buttons]"  _
                    &vbCrLf&"                   | ync   |[Yes, No, and Cancel buttons]" _
                    &vbCrLf&"                   | yn    |[Yes and No buttons]" _
                    &vbCrLf&"                   | rc    |[Retry and Cancel buttons]" _
                    &vbCrLf&"                   | ctc   |[Cancel and Try Again and Continue buttons]" _
                    &vbCrLf&"      --->         | --->  |The output will be saved in variable ""pop.key""" _
                    &vbCrLf&"" _
                    &vbCrLf&"Example:" _
                    &vbCrLf&"        popup /tt:""My MessageBox"" /t:5 /m:""Line 1\nLine 2\n/\n\nLine 4""" _
                    &vbCrLf&"" _
                    &vbCrLf&"                     v1.9 By RDR @ 2020"
    Wscript.Quit
End Function

</script></job>

-3

它仅需要在vm内弹出时,因此从技术上讲,应该有一些代码:

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

下注,因为如果(%machine_type%== virtual_machine)== true,安装将不会继续
阴离子
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.