ADBLOCKを無効にする

ADBlockがサイトの一部のコンテンツをブロックしています

ADBlock errore

Windowsバッチファイルからポップアップ/メッセージボックスを表示します

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

質問

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はそれとは何の関係もない、あなたはおそらく、(再び:なしDOS、純粋なWindowsのだけではないウィンドウが、コンソール)Windowsのコマンドライン・ソリューションを求めています。

あなたはboflynnたりすることができます誤使用のnet sendまたはmsgが提供するVBScriptのメソッドを使用できます。 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();

「href="https://stackoverflow.com/questions/12976351/escaping-parentheses-within-parentheses-for-batch-file">があなたの括弧をエスケープするます場合は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を使用することの利点は、MSG.exeが限りではありませんしながら、それは(タイトル、アイコンなどを変更)本当にcustomaziableであるということです。

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

少数のより多くの方法ます。

<強い> 1)のgeekiestとhackiest - それは、単一のボタン(それは、ポップアップメッセージの)の2つのタイプを作成することができます。 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を使用します。また、(ここでは、JavaScriptが最小化され、「外部」の言語をしたくないOPにもかかわらず)XPからと上のすべてのWindowsマシン上で動作します。 .batとして保存する必要があります:

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

alert("Hello, world!");

または1行でます:

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ハイブリッドです。これは、再びOPの要求にもかかわらず、それはそれは心配せずにbatファイルとして呼び出すことができるバットであるとJavaScriptを使用しています。それは少しできます POPUP を使用していますhref="http://msdn.microsoft.com/en-us/library/sfw6660x(v=vs.84).aspx" rel="nofollow noreferrer"> 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ファイルをコンパイル時間.This

@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への1回の呼び出しで()コマンドラインまたはバッチから呼び出すことができます。

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

ここで@npocmakaによってここに掲載PowerShellのメッセージボックスコマンドよりもウィンドウを作成する前にロードするアセンブリを必要としないPowerShellの変異体は、しかし、それは著しく遅く(〜+ 50%)を実行します。

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

あなたは、ダイアログにアイコンを表示するには、以下の値に「0x0の」から最後のパラメータを変更することができます(参照さらに参照のポップアップ方法の)

のpng する = "疑問符"> する = "感嘆符"> 0x40の情報マーク<BR の "情報マーク">

のMicrosoft TechNetの記事<のhref = "https://blogs.technet.microsoft.com/heyscriptingguy/2014/04/04/powertip-use-powershell-to-display-pop-up-window/から適応"REL =" nofollowをnoreferrer ">パワーヒント:使用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を使うには、コマンドラインやシェルスクリプトでダイアログボックスを実行することができます。詳細情報は、また、ウィキペディアの上で見つけることができます。

これは、クロスプラットフォームである:Windows用のWindowsインストーラがのここで見つけることができます<。 / P>

msg * /time:0 /w Hello everybody!
OKをクリックするまで、

このメッセージは、(それがデフォルトでのみ1分持続)とWindows 8.1で正常に動作します永遠に待つ

あなたは、私が考えてuser32.dllのからDLL関数を呼び出すことができます

のようなもの
  

RUNDLL32.EXEのUSER32.DLL、メッセージボックス(0、 "テキスト"、 "のTitleText"、{余分フラグの最上位のようなメッセージボックスe.t.c})

私の携帯電話からそれを入力する、そうでなければ私は、余分なフラグをリンクする...私を判断しないでください。

MSG * /server:127.0.0.1ここにメッセージを入力します。

<強い>より良いオプションの

<強い> 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