Bir toplu iş dosyasından bir ileti kutusu görüntülemenin bir yolu var mı ( xmessage
Linux'ta bash komut dosyalarından nasıl kullanılabileceğine benzer )?
Bir toplu iş dosyasından bir ileti kutusu görüntülemenin bir yolu var mı ( xmessage
Linux'ta bash komut dosyalarından nasıl kullanılabileceğine benzer )?
Yanıtlar:
Ben çok basit bir VBScript dosyası yapmak ve komut satırı parametrelerini ayrıştırmak için CScript kullanarak çağırır.
Aşağıdakine benzer bir şey kaydedildi MessageBox.vbs
:
Set objArgs = WScript.Arguments
messageText = objArgs(0)
MsgBox messageText
Buna şöyle derdiniz:
cscript MessageBox.vbs "This will be shown in a popup."
Her şeyden önce, DOS'un bununla bir ilgisi yoktur, muhtemelen bir Windows komut satırı çözümü istiyorsunuz (tekrar: DOS yok, saf Windows, sadece bir Pencere değil, bir Konsol).
Boflynn tarafından sağlanan VBScript yöntemini kullanabilir net send
veya yanlış kullanabilirsiniz veya msg
. net send
yalnızca eski Windows sürümlerinde çalışır:
net send localhost Some message to display
Bu aynı zamanda çalışacak Messenger hizmetine de bağlıdır.
Daha yeni sürümler için (görünüşe göre XP ve üstü):
msg "%username%" Some message to display
Kullanılarak gönderilen bir mesaj kutusunun msg.exe
yalnızca 60 saniye süreceği unutulmamalıdır . Ancak bu /time:xx
anahtarla geçersiz kılınabilir .
Biraz flaş gösterebilir, ancak geçici dosyalar gerekmez. (IIRC) IE5 döneminde bir yere kadar çalışmalı.
mshta javascript:alert("Message\n\nMultiple\nLines\ntoo!");close();
Unutma senin parantez kaçmak kullanmakta iseniz if
:
if 1 == 1 (
mshta javascript:alert^("1 is equal to 1, amazing."^);close^(^);
)
close() was unexpected at this time
.
^
bir yarasa dosyasında bu kaçış karakterleri kaldırmanız gerekiyor
Bu, başka bir Komut İstemi penceresi açar:
START CMD /C "ECHO My Popup Message && PAUSE"
start cmd /c "@echo off & mode con cols=18 lines=2 & echo My Popup Message & pause>nul"
, değiştirmek cols=18
mesajla + 2 karakter miktarına. Ve lines=2
çizgi miktarı ne olursa olsun + 1'dir.
cmd /k
Deneyin :
Msg * "insert your message here"
Windows XP'nin command.com adresini kullanıyorsanız, bu bir mesaj kutusu açar.
Yeni bir cmd penceresi açmak istediğin gibi değil, topladım. Ayrıca VBScript kullanabilir ve bunu .bat dosyanızla kullanabilirsiniz. Bunu şu komutla bat dosyasından açarsınız:
cd C:\"location of vbscript"
Bunun yaptığı komut, command.com'un dosyaları arayacağı dizini, ardından bir sonraki satırda değiştirmektir:
"insert name of your vbscript here".vbs
Sonra yeni bir Not Defteri belgesi oluşturun, yazın
<script type="text/vbscript">
MsgBox "your text here"
</script>
Daha sonra bunu bir .vbs dosyası olarak kaydedeceksiniz (dosya adının sonuna ".vbs" koyarak), dosya adının altındaki açılır kutuya "Tüm Dosyalar" olarak kaydedin (böylece .txt olarak kaydedilmez) ), ardından Kaydet!
<script/>
Etikete ihtiyacınız yok .
msg *
, önce bir mesaj girmeniz ve ardından ctrl-Z yazmanız istenir. Buraya mesajınızda görünecek satır sonlarını girebilirsiniz.
Birkaç yol daha.
1) En geeki ve hackiest - tek bir düğmeyle bir pop-up oluşturacak küçük exe oluşturmak için IEXPRESS'i kullanır ( iki tür açılır mesaj oluşturabilir ). Her XP ve üstü pencerede çalışır:
;@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) kullanma MSHTA
. Ayrıca XP ve üzeri tüm Windows makinelerinde çalışır (OP "harici" dilleri istemese de burada JavaScript minimize edilmiştir). Şu şekilde kaydedilmelidir .bat
:
@if (true == false) @end /*!
@echo off
mshta "about:<script src='file://%~f0'></script><script>close()</script>" %*
goto :EOF */
alert("Hello, world!");
veya bir satırda:
mshta "about:<script>alert('Hello, world!');close()</script>"
veya
mshta "javascript:alert('message');close()"
veya
mshta.exe vbscript:Execute("msgbox ""message"",0,""title"":close")
3) İşte parametreli .bat/jscript
hibrit (olarak kaydedilmelidir bat
). OP isteğine rağmen yine JavaScript kullanıyor, ancak bir yarasa olduğu için endişelenmeden bir bat dosyası olarak çağrılabilir. Daha popüler MSGBOX'tan biraz daha fazla kontrole izin veren POPUP kullanır . WSH kullanır, ancak yukarıdaki örnekte olduğu gibi MSHTA kullanmaz.
@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) ve bir jscript.net/.bat
karma (olarak kaydedilmelidir .bat
) .Bu kez silinebilecek .NET
küçük bir .exe
dosyayı kullanır ve derler :
@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) ve sonunda bir pop-up oluşturan tek bir powershell çağrısı (powershell yüklüyse komut satırından veya toplu işten çağrılabilir):
powershell [Reflection.Assembly]::LoadWithPartialName("""System.Windows.Forms""");[Windows.Forms.MessageBox]::show("""Hello World""", """My PopUp Message Box""")
6) Ve burada görülen dbenham yaklaşımı
start "" cmd /c "echo(&echo(&echo Hello world! &echo(&pause>nul"
7 ) Bir sistem tepsisi bildirimleri için deneyebileceğiniz bu :
call SystemTrayNotification.bat -tooltip warning -time 3000 -title "Woow" -text "Boom" -icon question
Bu şekilde toplu iş dosyanız bir VBS komut dosyası oluşturur ve bir açılır pencere gösterir. Çalıştırdıktan sonra, toplu iş dosyası bu ara dosyayı siler.
MSGBOX kullanmanın avantajı, MSG.exe kadar olmasa da gerçekten saklanabilir olmasıdır (başlığı, simgeyi vb.).
echo MSGBOX "YOUR MESSAGE" > %temp%\TEMPmessage.vbs
call %temp%\TEMPmessage.vbs
del %temp%\TEMPmessage.vbs /f /q
Pencereyi oluşturmadan önce montajları yüklemeyi gerektirmeyen bir PowerShell varyantı, ancak @npocmaka tarafından yayınlanan PowerShell MessageBox komutundan belirgin şekilde daha yavaş (~ +% 50) çalışıyor:
powershell (New-Object -ComObject Wscript.Shell).Popup("""Operation Completed""",0,"""Done""",0x0)
İletişim kutusundaki simgeleri görüntülemek için son parametreyi "0x0" dan aşağıdaki bir değere değiştirebilirsiniz ( daha fazla başvuru için Popup Yöntemi'ne bakın ):
0x10 Dur
0x20 Soru İşareti
0x30 Ünlem İşareti
0x40 Bilgi İşareti
PowerTip Microsoft PowerNet makalesinden uyarlanmıştır: Açılır Pencereyi Görüntülemek için PowerShell'i kullanın .
echo X=MsgBox("Message Description",0+16,"Title") >msg.vbs
– 0 yerine 0,1,2,3,4'ten ('+' sembolünden önce) herhangi bir sayı yazabilirsiniz & işte her sayının anlamı:
0 = Ok Button
1 = Ok/Cancel Button
2 = Abort/Retry/Ignore button
3 = Yes/No/Cancel
4 = Yes/No
–16 yerine 16,32,48,64 ('+' sembolünden sonra) herhangi bir sayı yazabilirsiniz & işte her sayının anlamı:
16 – Critical Icon
32 – Warning Icon
48 – Warning Message Icon
64 – Information Icon
Msg * "mesajınızı buraya yazınız"
iyi çalışır, not defterinde bir .bat dosyası olarak kaydedin veya biçimin "tüm dosyalar" olarak ayarlandığından emin olun
msg %SESSIONNAME% msg
msg * /time:0 /w Hello everybody!
Bu ileti, Tamam tıklanıncaya kadar (varsayılan olarak yalnızca bir dakika sürer) sonsuza kadar bekler ve Windows 8.1'de iyi çalışır
msg * /time:0 /w <C:\Somewhere\Message.txt
dosyada normal metin (CrLf içeren).
Bunu yapmak için, bir ileti kutusu görüntüleyen ve bunu toplu iş dosyanızdan çalıştıran küçük bir programınızın olması gerekir.
Yine de bir komut istemi görüntüleyen bir konsol penceresi açabilirsiniz, ancak cmd.exe ve yalnızca arkadaşlarınızı kullanarak bir GUI ileti kutusu almak mümkün değildir, AFAIK.
Buradan msgbox.exe adlı bir yardımcı program kullanıyorum: http://www.paulsadowski.com/WSH/cmdprogs.htm
Zenity'yi kullanabilirsiniz . Zenity, komut satırı ve kabuk komut dosyalarında iletişim kutularının yürütülmesine izin verir. Wikipedia'da daha fazla bilgi de bulunabilir .
Platformlar arası: Windows için bir Windows yükleyicisi burada bulunabilir .
@ Fowl'un cevabını takip ederek, aşağıdakileri kullanarak sadece 10 saniye boyunca görünmesi için zaman aşımı ile geliştirebilirsiniz:
mshta "javascript:var sh=new ActiveXObject( 'WScript.Shell' ); sh.Popup( 'Message!', 10, 'Title!', 64 );close()"
Daha fazla ayrıntı için buraya bakın.
Sen bence user gibi dll işlevini çağırabilirsiniz Bir şey gibi
Rundll32.exe user32.dll, MessageBox (0, "metin", "titleText", {en üstteki mesaj kutusu gibi ekstra bayraklar vb})
Telefonumdan yazarak, beni yargılama ... aksi takdirde ekstra bayrakları bağlarım.
rundll32.exe user32.dll,MessageBoxA X
ben Çalıştır kutusuna bunu yaparken başlık olarak X ile bu mesaj kutusunu görüntülemek için. X ne yaparsam yapayım, birden fazla parametre olarak yorumlanamıyorum - her şey başlığa giriyor. Yani rundll32.exe user32.dll,MessageBoxA (0, "MyTitle", "MyText", 0)
başlıklı bir mesaj (0, "MyTitle", "MyText", 0)
kutusu görüntüler Ama komut satırından AT ALL çalışmasını alamıyorum - sadece Çalıştır kutusundan. Komut satırında hiçbir şey yapmaz. Komut satırından veya toplu iş dosyasından mı yoksa yalnızca Çalıştır kutusundan mı çalışıyor?
msg * /server:127.0.0.1 Mesajınızı buraya yazın
where msg
geri döner C:\Windows\System32\msg.exe
. Sanırım düşünüyorsunnet send
Toplu iş dosyalarınızı yürütülebilir dosyalara dönüştürürseniz (sarırsanız) bu uygulama bunu yapabilir.
Basit Mesaj Kutusu
%extd% /messagebox Title Text
Hata Mesaj Kutusu
%extd% /messagebox Error "Error message" 16
İptal Tekrar Dene Mesaj Kutusu
%extd% /messagebox Title "Try again or Cancel" 5
4) "Bir daha asla sorma"
%extd% /messageboxcheck Title Message 0 {73E8105A-7AD2-4335-B694-94F837A38E79}
Daha iyi bir seçenek
set my_message=Hello world
&& start cmd /c "@echo off & mode con cols=15 lines=2 & echo %my_message% & pause>nul"
Açıklama:
lines=
satır sayısı, cols=
mesajdaki 1
karakter miktarı, artı 3 (Ancak, minimum olmalıdır 15
)
cols
sürüm: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"
start cmd /c "@echo off & mode con cols=18 lines=2 & echo My Popup Message & pause>nul"
). Seninki değil. İletiyi yansıtır, ancak The screen cannot be set to the number of lines and columns specified.
en azından Windows 7'de dönen pencere boyutunu ayarlayamaz .
x
geçerli dizinde adında bir dosya olmaması ya da kaybetmemeniz şartıyla .
x
, komutunuz başarısız olur. Bana teşekkür etme ve lütfen kodunu düzelt. Tek astar kullanmanıza bile gerek yok. Kodunuzun çok iyi olduğunu düşünüyorsanız lütfen Kod İncelemesinde yayınlayın .
İşte burada ve diğer yazılarda iyi cevaplara dayanarak bir araya getirdiğim toplu senaryom
Başlık zaman aşımı ayarlayabilir ve hatta ikinci satır için zamanlamak üzere uyuyabilirsiniz & yeni satır için \ n
Popup.bat olarak adlandırın ve bilgisayarınızda küresel olarak çalışmak için windows yolu klasörünüze koyun
Örneğin popup Line 1\nLine 2
, 2 satırlık bir açılır kutu oluşturur ( popup /?
kullanım türü )
İşte kod
<!-- : 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>
SADECE bir vm içinde pop-up gerekiyor, bu yüzden teknik olarak, gibi bazı kod olmalıdır:
if %machine_type% == virtual_machine then
echo message box code
else
continue normal installation code