CMD에서 직접 Msgbox를 표시하는 방법


16

CMD를 사용하여 사용자에게 메시지를 표시하고 싶습니다. 내가 아는 방법은 .vbs (VBScript) 파일을 만들고 CMD에서 다음과 같이 실행하는 것입니다.

(echo MsgBox "Line 1" ^& vbCrLf ^& "Line 2",262192, "Title")> File.vbs

start File.vbs

그러나 내가하고 싶은 일은 CMD에서 직접 파일을 만들지 않고 메시지를 표시하는 것입니다. 명령을 사용하여 CMD에서 바로 VBScript를 실행할 수 있습니다.


msg명령을 찾으십시오 . Home 에디션의 Windows를 실행중인 경우에는 없을 수도 있지만 Pro 설치에서 msg.exe를 복사하여 붙여 넣기 만하면 추가 할 수 있습니다.
wysiwyg

방법이 있다면 모든 Windows 10 버전에 대해 조금 더 보편적 인 것을 원합니다.
Bita

항상 파워 쉘이 있습니다. Microsoft가 cmd 프롬프트 제거로의 전환을 분명히 시작했지만 종종 간과했습니다.
Appleoddity

답변:


9

다른 사람들이 cmd를 사용 하여이 작업을 수행 할 수있는 방법은 없지만 질문의 제목이지만 파일없는 부분 이 당신에게 더 중요하고 특정 상황에서는 이것이 가능할 수 있다고 생각합니다.

powershell을 사용하면 다음과 같은 파일없이 코드를 실행할 수 있어야합니다.

PowerShell -Command "Add-Type -AssemblyName PresentationFramework;[System.Windows.MessageBox]::Show('Hello World')"

VBS는 cscript 또는 wscript를 통한 코드의 직접 실행을 허용하지 않지만 mshta는 수행합니다. 다음과 같이 사용할 수 있습니다 (여러 줄이 필요한 경우 ':'을 구분 기호로 사용하십시오).

mshta vbscript:Execute("msgbox ""Hello World"":close")

그것은 기반이기 때문에 일부 gpo 제한에 의해 영향을받을 수 있으므로 선택 파워 쉘이 있다면 아마도 더 안전한 내기입니다


에 대한 위의 경고 외에도 mshta일부 바이러스 백신 소프트웨어는 잠재적으로 원치 않는 프로세스로 간주합니다. 직장에서이 제품을 실행하려는 시도로 인해 전체 시스템을 검역소에 보관하고 네트워크에서 제거하는 대단한 엔터프라이즈 제품 (SentinelOne)이 발생했습니다.
Jason

15

@wysiwyg에서 제안한 바와 같이 Windows의 Pro / Business 버전 *에서는 Msg명령을 찾고 있습니다. 모든 최신 버전의 Windows에서 사용할 수 있습니다 (최소한 XP까지). 현재 로그온 한 사용자에게 메시지를 표시하려면 다음을 실행하십시오.

msg %username% Your message here

결과는 다음과 같습니다. 여기에 이미지 설명을 입력하십시오

이 명령에서 고려해야 할 사항은 제목 표시 줄 텍스트를 사용자 정의 할 수 없다는 것입니다.

TechNet에서 Msg 대해 자세히 알아볼 수 있습니다 .


* Home을 포함한 모든 Windows 에디션에서 작동하는 솔루션이 필요한 경우 이미 알고있는 VBScript 방법이이 문제에 대한 가장 간단한 솔루션입니다. 기본 구성으로 모든 최신 버전의 Windows에서 작동하며 사용하기 쉽습니다.


1
완전히 사실이 아닙니다. 윈도우가 나온 후 dps 메시지 상자 명령이있었습니다. 가능한 악용으로 간주되어 Windows 7 또는 8에서 제거되었다고 생각합니다.
Keltari

2

오늘 이것과 비슷한 것이 필요했습니다. 실제로 VBScript / Powershell의 팬이 아니기 때문에 내가 좋아하는 외부 종속성 솔루션을 찾을 수 없었기 때문에 다음과 같이 작성했습니다.

https://github.com/cubiclesoft/messagebox-windows

생성 된 메시지 상자 는 현재 콘솔 창에 모달 입니다. 즉, 사용자는 대화 상자를 닫을 때까지 아무것도 할 수 없습니다. 또한 MessageBox()호출 의 리턴 코드 는 호출자에게 리턴되므로 스크립트는 어떤 버튼을 눌렀는지에 반응 할 수 있습니다. 물론 MessageBox()Win32 API에 대한 모든 옵션을 지원합니다 .

믹스에 80KB 실행 파일을 추가하는 것이 모든 사람의 차가 아닐 수도 있습니다. 그것은 VC ++ 런타임에 정적으로 연결되어 있으며 유니 코드를 지원합니다. 이는 파일의 최소 특성으로 인해 파일이 너무 큰 이유를 설명합니다. 그리고 여러 줄 메시지를 표시하기 위해 명령 줄에서 줄 바꿈을 쉽게 전달할 수 없다는 사소한 문제가 있습니다. 약간의 거꾸로, 지금까지 제시된 다른 솔루션보다 벽 시계 시간이 짧은 대화 상자가 표시됩니다.

물론 파일 크기가 중요하지 않고 대화 상자가 너무 "얼굴에"사용자 경험을 만들거나 사용자 상호 작용이 필요하지 않은 경우이 멋진 프로젝트를 만났습니다.

https://www.paralint.com/projects/notifu/

IUserNotification을 사용하여 화면의 상태 알림 영역에 팝업 풍선을 표시합니다 . 단점은 Notifu 실행 파일이 240KB를 부끄럽게 실행한다는 것입니다. COM이 불필요 한 팽창을 생성하고 기능에 대한 단순하고 가벼운 API가 있기를 바라는 또 다른 불행한 예입니다.

크로스 플랫폼에는 정열이 있습니다. 대부분 Linux 용이지만 Mac 및 Windows 포트도 있습니다. GTK가 부풀어 오르기 때문에 zenity의 Windows 포트 크기는 1MB가 넘습니다.


기본 Windows 버전이 이미 존재하는 user32 / comctl DLL을 선택하는 동안 모든 gtk를 내부적으로 제공해야하기 때문이 아닌가?
user1686

응? 질문을 명확히하십시오.
CubicleSoft

1

cmd를 사용 하여이 작업을 수행 할 수있는 방법이 있지만 기본적으로 파일이 포함되어 있지만 vbs가 실행 된 후 파일이 즉시 삭제됩니다. 실제로는 그렇지 않습니다. 넌 할 수있어 :

echo x=msgbox("Hey! Here is a message!",Type+Icon+Action,"Hey! Here is a title!") > %tmp%\tmp.vbs
cscript //nologo %tmp%\tmp.vbs
del %tmp%\tmp.vbs

Type + Icon + Action은 참고 용으로 기본적인 vbs입니다. https://therevisionist.org/wp-content/uploads/2016/03/vbscript_msgbox_chart-e1458059002411.jpg?x47750은 내가 당신을 나타낸 코드는 다음이 다음에서 cscript를 사용하여 그것을 실행, 거기에 VBS 코드를 가진 파일을 만든다 cmd 프롬프트에 의해 소환 된 것처럼 보이게 파일을 실행 한 후 삭제합니다. 더 많이 보이게하려면 @echo off를 사용하십시오. 이것이 도움이 되었기를 바랍니다!


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.