ОТКЛЮЧИТЬ АДБЛОК

ADBlock блокирует некоторый контент на сайте

ADBlock errore

Показать окно всплывающего окна / сообщение из пакетного файла Windows,

StackOverflow https://stackoverflow.com/questions/774175

вопрос

<Р> Есть ли способ, чтобы отобразить окно сообщения из пакетного файла (аналогично тому, как xmessage можно использовать из Баша-скриптов в Linux)?

Решение

<Р> Я бы очень простой файл 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, просто не окно, а консоль)

<Р> Вы можете использовать метод VBScript предоставленный boflynn или вы можете неправильно использовать net send или msg. net send работает только на старых версиях Windows:

net send localhost Some message to display
<Р> Это также зависит от службы Messenger, чтобы бежать, хотя.

<Р> Для более новых версий (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"

<Р> Try:

Msg * "insert your message here" 
<Р> Если вы используете command.com в Windows XP, откроется окно с сообщением.

<Р> Открытие нового окна CMD не совсем то, что вы просили, я собираю. Вы можете также использовать VBScript , и использовать этот файл .bat. Вы бы открыть его из файла летучей мыши с помощью этой команды:

cd C:\"location of vbscript"
<Р> Что это делает изменения command.com каталога будет искать файлы из, а затем на следующей строке:

"insert name of your vbscript here".vbs
<Р> Затем вы создаете новый Notepad документ, введите

<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) The geekiest и hackiest - он использует IExpress для создания небольшой ехе, который будет создавать всплывающее окно с помощью одной кнопки ( он может создать еще два типа всплывающих сообщений ). Работает на каждом из окон 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 и выше (несмотря на ФП не хотят «внешних» языков 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, но как это летучая мышь это можно назвать, как летучая мышь файл без забот. Он использует 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

<Р> Вот вариант PowerShell, который не требует загрузки сборок до создания окна, однако он работает заметно медленнее (~ + 50%), чем команда MessageBox PowerShell публикуемую здесь @npocmaka:

powershell (New-Object -ComObject Wscript.Shell).Popup("""Operation Completed""",0,"""Done""",0x0)
<Р> Вы можете изменить последний параметр из «0х0» до значения ниже, чтобы отобразить значки в диалоговом окне (см всплывающего метод для дальнейшей ссылки): <Р> 0x10 Стоп
0x20 Question Mark
0x30 Восклицательный знак
0x40 Information Mark

<Р> Взято из статьи 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 в блокноте или убедитесь, что формат установлен на «все файлы»

<Р> Для того, чтобы сделать это, вам нужно иметь небольшую программу, которая отображает MessageBox и запустить что из вашего пакетного файла.

<Р> Вы можете открыть окно консоли, в котором отображается подсказка, хотя, но получаешь окно GUI сообщения с помощью cmd.exe и друзей только не возможно, AFAIK.

<Р> Я использую утилиту под названием msgbox.exe здесь: http://www.paulsadowski.com/WSH/cmdprogs.htm

<Р> Вы можете использовать Zenity . Zenity позволяет для выполнения диалоговых окон в режиме командной строки и сценариях оболочки. Более подробную информацию можно найти на Википедии .

<Р> Это кросс-платформенный: установщик Windows, для Windows, можно найти здесь <. / р>

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()"
<Р> См здесь для более подробной информации.

<Р> Вы можете вызвать функцию DLL из user32.dll я думаю Что-то вроде

  <Р> Rundll32.exe user32.dll, MessageBox (0, "Текст", "TitleText", {дополнительные флаги для как верхний MessageBox e.t.c})

<Р> Typing его из моего телефона, не судите меня ... иначе я бы связать дополнительные флаги.

<Р> тзд * /server:127.0.0.1 Введите Ваше сообщение здесь

<Р> Это может сделать это, если преобразовать (обертка) ваши командные файлы в исполняемые файлы.

<Ч> <Ол>
  • <сильный> Простой Messagebox

    %extd% /messagebox Title Text
    
  • <Ч> <Ол начать = "2"> <Литий> <р> <сильный> Ошибка Messagebox
    %extd% /messagebox  Error "Error message" 16
    
  • <сильный> Отменить Try Again MessageBox

    %extd% /messagebox Title "Try again or Cancel" 5
    
  • <Ч>

    <сильный> 4) "Никогда не спрашивайте меня снова" Messagebox

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

    <Р> необходимо только всплывающие окна, когда внутри виртуальной машины, так что технически, должен быть некоторый код следующим образом:

    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