Windows 배치 파일에서 팝업 / 메시지 상자 표시


Answers

무엇보다도 DOS는 아무 관련이 없습니다. Windows 명령 줄 솔루션 (다시 말하면 DOS, 순수 Windows, Window가 아니라 콘솔)을 원할 것입니다.

boflynn에서 제공하는 VBScript 메소드를 사용하거나 net send 또는 msg 잘못 사용할 수 있습니다. net send 는 이전 버전의 Windows에서만 작동합니다.

net send localhost Some message to display

또한 메신저 서비스를 실행하는 데에도 달려 있습니다.

최신 버전 (XP 이상 버전) :

msg "%username%" Some message to display

msg.exe 를 사용하여 보낸 메시지 상자는 60 초 동안 만 지속됩니다. 그러나 이것은 /time:xx 스위치로 무시할 수 있습니다.

Question

배치 파일에서 메시지 상자를 표시하는 방법이 있습니까 ( xmessage 를 Linux의 bash 스크립트에서 사용할 수있는 것과 비슷합니다)?




여기에 창을 만들기 전에 어셈블리를로드 할 필요가없는 PowerShell 변형이 있지만 @npocmaka가 게시 한 PowerShell MessageBox 명령보다 현저하게 느리게 실행됩니다 (~ 50 %).

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

마지막 "0x0"매개 변수를 변경하여 예를 들어 대화 상자에 다른 아이콘을 표시 할 수 있습니다. 0x40은 "정보 표시"를 나타냅니다. 참조를 위해 Popup Method 를 참조하십시오.

Microsoft TechNet 기사 PowerTip : PowerShell을 사용하여 팝업 창 표시




이렇게하면 배치 파일이 VBS 스크립트를 만들고 팝업을 표시합니다. 실행 후 배치 파일은 해당 중간 파일을 삭제합니다.

MSGBOX를 사용하는 장점은 MSG.exe가 그리 많지는 않지만 실제로 사용자 정의 할 수 있다는 것입니다 (제목, 아이콘 등 변경).

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






VM 내부에서만 팝업이 필요하므로 기술적으로 다음과 같은 코드가 있어야합니다.

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



application 은 배치 파일을 실행 파일로 변환 (랩핑)하면 그렇게 할 수 있습니다.

  1. 단순한 Messagebox

    %extd% /messagebox Title Text
    
  1. 오류 메시지 상자

    %extd% /messagebox  Error "Error message" 16
    
  2. 취소 다시 시도 Messagebox

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

4) "다시 묻지 마라."Messagebox

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



@ Fowl의 답변에 이어 다음을 사용하여 10 초 동안 만 표시되도록 제한 시간을 설정하여 개선 할 수 있습니다.

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

자세한 내용은 here 를 참조하십시오.




msg * /time:0 /w Hello everybody!

이 메시지는 OK를 클릭 할 때까지 기다립니다 (기본적으로 1 분만 지속됨). Windows 8.1에서 정상적으로 작동합니다.




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

- 0 대신에 0,1,2,3,4에서 임의의 숫자를 쓸 수 있습니다 ( '+'기호 앞에). & 여기에 각 숫자의 의미가 있습니다.

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

- 16 대신에 16,32,48,64의 숫자를 쓸 수 있습니다 ( '+'기호 다음) & 각 숫자의 의미는 다음과 같습니다.

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



그러면 다른 명령 프롬프트 창이 팝업됩니다 :

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



Links