禁用密码锁

ADBlock阻止了网站上的某些内容

ADBlock errore
结果发现: 

是否有显示从一个批处理文件的消息框(类似于如何xmessage可以从在Linux中的bash-脚本中使用)?

的方式

我想使一个非常简单的VBScript文件和使用的CScript解析命令行参数调用它。

类似于下面的保存在MessageBox.vbs

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

,你会叫这样的:

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

MsgBox参考如果有兴趣去这条路线。

如果您愿意,请留下您的意见

这篇文章对您有帮助吗,翻译是否正确?

其他提示

首先,DOS无关有了它,你可能想在Windows命令行的解决方案。(再次:没有DOS,纯粹的Windows,只是没有一个窗口,而是一个控制台)

您既可以使用由boflynn提供VBScript的方法或可以误用net sendmsgnet send仅适用于旧版本的Windows:

net send localhost Some message to display

此也取决于信使服务来运行,虽然。

有关新版本(XP及以后,显然):

msg "%username%" Some message to display

应当指出的是,使用msg.exe发送的消息框将仅持续60秒。这可以然而可以与/time:xx开关覆盖。

可能会显示一点点闪光灯,但不需要临时文件。如果所有的工作方式回到在(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^(^);
)

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

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

尝试:

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),然后保存!

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

使用MSGBOX的优点是,它是真的customaziable(改变标题,图标等),而MSG.exe是不一样多。

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

很少更多的途径。

<强> 1)的最令人讨厌和hackiest - 它使用IExpress程序来创建小exe文件,将创建一个弹出具有单个按钮(它可以创建两种以上类型的弹出消息的的)。适用于从XP和上述每一个Windows:

;@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。另外每天都要工作在Windows机器上从XP及以上(尽管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杂交体(应保存为bat)。它再次使用JavaScript尽管OP请求,但因为它是一个蝙蝠它可以被称为无忧虑一个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的做法看出 href="https://stackoverflow.com/a/12516524/388389">

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

下面是一种不需要之前创建窗口加载组件一个PowerShell变型中,但是它运行明显慢(〜+ 50%)比@npocmaka此处公布的PowerShell的MessageBox的命令:

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

可以从“为0x0”的最后一个参数改变为值低于在对话框中显示图标(参见 Popup方法获得进一步参考):

“停止” 0X10停止,点击 “问号” 0x20的问号点击 “感叹号” 的0x30感叹号,点击 “信息标记” 0x40的信息标记,点击

从Microsoft TechNet文章 PowerTip:使用PowerShell来显示弹出窗口

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  

信息* “在这里留言”

工作正常,只是保存为记事本.bat文件,或者确保格式设置为“所有文件”

为了做到这一点,你需要有一个显示一个消息框的小程序,并运行从您的批处理文件。

您可以打开,虽然显示提示符控制台窗口,但使用的cmd.exe和朋友得到一个GUI消息框,不仅是可能的,据我所知。

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

可以使用 Zenity 。 Zenity允许的对话框中的命令行和shell脚本执行。的详细信息也可以在维基找到。

这是跨平台:一个Windows的Windows安装程序,可以发现这里 <。 / p>

msg * /time:0 /w Hello everybody!

这个消息永远等待被点击确定,直到(它只有一分钟默认情况下),并在Windows 8.1正常工作

继@鸡的回答,您可以用超时提高其使用只出现10秒以下内容:

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

请参阅此处更多的细节。

您可以从user32.dll中调用DLL函数,我认为 类似

  

的Rundll32.exe user32.dll中,的MessageBox(0, “文本”, “titleText”,{额外标志像最上面的MessageBox e.t.c})

这是我的手机上输入它,不要评判我......否则我将连接额外的标志。

味精* /server:127.0.0.1键入您的信息在这里

应用能做到这一点,如果转换(套)您的批处理文件到可执行文件。结果


  1. <强>简单消息框

    %extd% /messagebox Title Text
    

  2. 错误消息框

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

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

  4. <强> 4) “从不询问我再次” 消息框

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

:一种更好的选择

<强> 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"

它只需要弹出当VM内,所以在技术上,应该有一些这样的代码:

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow