CMD से सीधे Msgbox कैसे प्रदर्शित करें


16

मैं सीएमडी का उपयोग करके उपयोगकर्ता को एक संदेश प्रदर्शित करना चाहूंगा। जिस तरह से मुझे पता है कि एक .vbs (VBScript) फ़ाइल बनाकर इसे CMD से इस तरह निष्पादित किया जाता है:

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

start File.vbs

लेकिन मैं जो करना चाहता हूं, वह यह है कि बिना किसी फाइल को बनाए, सीधे सीएमडी से संदेश प्रदर्शित करें। शायद सीएमडी से VBScripts चलाने के लिए एक कमांड का उपयोग करके।


msgकमांड को देखो । यदि आप Windows का होम संस्करण चला रहे हैं, तो आपके पास यह नहीं हो सकता है, लेकिन आप इसे प्रो इंस्टॉलेशन से Ms.exe को केवल कॉपी और पेस्ट करके जोड़ सकते हैं।
wysiwyg

मैं थोड़ा और अधिक "सार्वभौमिक" कुछ करूँगा, अगर कोई रास्ता है तो सभी विंडोज़ 10 संस्करणों के लिए।
बिता

हमेशा पॉवरशेल भी है। अक्सर अनदेखी की गई, भले ही माइक्रोसॉफ्ट ने स्पष्ट रूप से cmd प्रॉम्प्ट को खत्म करने के लिए संक्रमण शुरू कर दिया हो।
Appleoddity

जवाबों:


9

जैसा कि अन्य लोगों ने कहा है कि यह पूरी तरह से cmd के साथ करने का कोई तरीका नहीं है, लेकिन हालांकि यह सवाल का शीर्षक है, यह मुझे लगता है कि फ़ाइल के बिना हिस्सा आपके लिए अधिक महत्वपूर्ण है और कुछ परिस्थितियों में यह संभव हो सकता है।

शक्तियों के साथ कोड को बिना किसी तरह के चलाना संभव होना चाहिए:

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

VBS, CSस्क्रिप्ट या wscript के माध्यम से कोड के प्रत्यक्ष निष्पादन की अनुमति नहीं देता है लेकिन mshta करता है। आप इसे इस तरह से उपयोग कर सकते हैं (यदि आपको कई लाइनों के उपयोग की आवश्यकता है: '' सीमांकक के रूप में):

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

जैसा कि यह है कि यह कुछ gpo प्रतिबंधों से प्रभावित हो सकता है, इसलिए यदि आपके पास विकल्प है तो शायद यह अधिक सुरक्षित शर्त है


इसके बारे में उपरोक्त चेतावनी के अलावा mshta, कुछ एंटीवायरस सॉफ़्टवेयर इसे संभावित अवांछित प्रक्रिया मानते हैं। काम के दौरान, इसे चलाने के मेरे प्रयास का नतीजा यह हुआ कि मेरी पूरी मशीन को अलग कर दिया और इसे नेटवर्क बना दिया।
जेसन

15

जैसा कि आप Msgकमांड के लिए देख रहे हैं, विंडोज के प्रो / बिजनेस वर्जन पर @wysiwyg द्वारा सुझाव दिया गया है । यह विंडोज के सभी आधुनिक संस्करणों में उपलब्ध है (कम से कम जहाँ तक XP है)। वर्तमान में लॉग ऑन किए गए उपयोगकर्ता के लिए एक संदेश प्रदर्शित करने के लिए, निम्नलिखित चलाएँ:

msg %username% Your message here

परिणाम इस तरह दिखता है: यहाँ छवि विवरण दर्ज करें

इस कमांड के साथ एक विचार यह है कि आप टाइटलबार टेक्स्ट को कस्टमाइज़ नहीं कर सकते हैं।

आप TechNet पर Msg के बारे में अधिक जान सकते हैं ।


* यदि आपको एक समाधान की आवश्यकता है जो कि होम सहित विंडोज के सभी संस्करणों पर काम करता है , तो मेरी राय में जिस VBScript विधि के बारे में आप पहले से जानते हैं वह इस समस्या का सबसे सरल समाधान है। यह उनके डिफ़ॉल्ट कॉन्फ़िगरेशन में विंडोज के सभी आधुनिक संस्करणों और संस्करणों पर काम करता है, और उपयोग करने में आसान है।


1
पूरी तरह से सच नहीं है। विंडोज़ से बाहर आने के बाद एक डीपीएस संदेश बॉक्स कमांड था। मेरा मानना ​​है कि इसे विंडोज 7 या 8 में हटा दिया गया था क्योंकि इसे एक संभावित शोषण के रूप में देखा गया था।
केल्टरी

2

मुझे आज भी ऐसा ही कुछ चाहिए था। चूंकि मुझे बाहरी निर्भरता समाधान नहीं मिला, जो मुझे पसंद आया क्योंकि मैं वास्तव में VBScript / पॉवर्सशेल का प्रशंसक नहीं हूं, मैंने आगे जाकर लिखा:

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

जो संदेश बॉक्स उत्पन्न करता है वह वर्तमान कंसोल विंडो के लिए मोडल है। यही है, जब तक वे संवाद बंद नहीं करते, उपयोगकर्ता कुछ भी नहीं कर सकते। इसके अलावा, MessageBox()कॉल से वापसी कोड कॉलर को वापस कर दिया जाता है ताकि एक स्क्रिप्ट जो भी बटन दबाया जा सके, उस पर प्रतिक्रिया कर सके। और, ज़ाहिर है, यह MessageBox()Win32 API के लिए विकल्पों की पूरी श्रृंखला का समर्थन करता है।

मिश्रण के लिए एक 80KB निष्पादन योग्य जोड़ना हर किसी के लिए चाय का कप नहीं हो सकता है। यह वैधानिक रूप से VC ++ रनटाइम के खिलाफ जुड़ा हुआ है और यूनिकोड का समर्थन करता है, जो बताता है कि फ़ाइल इतनी बड़ी क्यों है कि यह क्या करता है की न्यूनतर प्रकृति को देखते हुए। और बहुस्तरीय संदेश प्रदर्शित करने के लिए कमांड-लाइन से आसानी से नई सुर्खियों में नहीं आने का एक मामूली मुद्दा है। एक मामूली उल्टा, यह अब तक प्रस्तुत किए गए अन्य समाधानों की तुलना में कम दीवार घड़ी में संवाद प्रदर्शित करता है।

बेशक, अगर फ़ाइल का आकार मायने नहीं रखता है और संवाद "आपके चेहरे में" उपयोगकर्ता अनुभव और / या उपयोगकर्ता सहभागिता की आवश्यकता नहीं है, तो भी मैं इस निफ्टी परियोजना में भाग गया:

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

जो IUserNotification का उपयोग करके स्क्रीन की स्थिति सूचना क्षेत्र में एक पॉपअप गुब्बारा प्रदर्शित करता है । नकारात्मक पक्ष यह है कि नोटिफ़ू निष्पादन योग्य सिर्फ 240KB की शर्मीली है। एक और दुर्भाग्यपूर्ण उदाहरण है कि COM अनावश्यक ब्लोट बनाता है और मुझे यह इच्छा करता है कि सुविधा के लिए एक सरल, हल्का एपीआई था।

कुछ क्रॉस-प्लेटफ़ॉर्म के लिए, ज़ेनिटी है। यह ज्यादातर लिनक्स के लिए है, लेकिन मैक और विंडोज पोर्ट भी हैं। विंडोज़ ऑफ़ ज़ेनिटी 1 एमबी से अधिक आकार का है क्योंकि, ठीक है, जीटीके काफी फूला हुआ है।


इसलिए नहीं कि इसमें सभी gtk को आंतरिक रूप से शिप करना है, जबकि देशी विंडोज वर्जन में पहले से मौजूद user32 / comctl DLL को ही चुनना है?
user1686

है ना? कृपया प्रश्न स्पष्ट करें।
क्यूबिकलसॉफ्ट

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

टाइप + आइकन + एक्शन केवल एक संदर्भ के लिए, यहां मूल vbs है। https://therevisionist.org/wp-content/uploads/2016/03/vbscript_msgbox_chart-e1458059002411.jpg?x47750 जो कोड मैंने आपको दिखाया है, उसमें एक फाइल बनाई गई है, जिसमें VBS कोड है, फिर वह इसे CScript का उपयोग करके निष्पादित करता है, फिर इसे यह निष्पादित होने के बाद फ़ाइल को हटाता है जिससे यह दिखता है कि इसे cmd प्रॉम्प्ट द्वारा समन किया गया है। इसे और अधिक दिखने के लिए, बस @ टेकओ ऑफ का उपयोग करें। उम्मीद है कि इस मदद की!


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.