"कमांड विंडो" लॉन्च किए बिना बैच फ़ाइल कैसे चलाएं? [डुप्लिकेट]


131

इस सवाल का पहले से ही यहाँ एक जवाब है:

विंडोज एक्सपी पर, क्या मैं "ब्लैक विंडो" के बिना शॉर्टकट के माध्यम से एक बैच (.bat या .cmd) फ़ाइल चला सकता हूं?


6
क्या आप पूछ रहे हैं कि क्या आप बैट विंडो चलाते समय कमांड विंडो को दिखाने से रोक सकते हैं?
एरिक

6
हाँ, आप आसानी से cmd.exe शॉर्टकट पर गुण का उपयोग करके आउटपुट विंडो का डिफ़ॉल्ट रंग बदल सकते हैं। (हां यह एक मजाक है ...)
टोबी जे

जवाबों:


86

उदाहरण के लिए, wscript के रूप में निम्नलिखित को सहेजें, अपने बैच फ़ाइल के नाम के साथ "परीक्षण.बैट" को बदलने के बाद hidecmd.vbs।

Set oShell = CreateObject ("Wscript.Shell") 
Dim strArgs
strArgs = "cmd /c testing.bat"
oShell.Run strArgs, 0, false

का दूसरा पैरामीटर oShell.Runहै intWindowStyleकार्यक्रम की खिड़की और शून्य मान की उपस्थिति का संकेत मूल्य छिपा खिड़की के लिए है।

संदर्भ यहाँ है http://msdn.microsoft.com/en-us/library/d5fk67ky.aspx


क्या तीसरी पंक्ति होगी: strArgs = "cmd / c FILEPATH \ testing.bat"?
डैन जेड

1
अदृश्य रहते हुए बल्ला को उन्नत तरीके से चलाने का कोई तरीका?
लॉरेन्स स्वार्ट

.batइस पद्धति का उपयोग करके फ़ाइल को व्यवस्थापक के रूप में कैसे चलाएं ?
मेहदी देहगानी

44

यह शाजी के उत्तर का सिर्फ एक सरलीकरण है। आप अपनी बैच स्क्रिप्ट को VBScript (.vbs) स्क्रिप्ट के माध्यम से इस तरह चला सकते हैं :

'HideBat.vbs
CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True

यह आपकी बैच फ़ाइल को बिना किसी कमांड विंडो के निष्पादित करेगा।


.batइस पद्धति का उपयोग करके व्यवस्थापक के रूप में फ़ाइल कैसे चलाएं ?
मेहदी देहगानी

@MehdiDehagani गुण> सुरक्षा> व्यवस्थापक के रूप में चलाएँ। यदि वह केवल exe या ऐप्स के लिए काम करता है, तो ओह कुओं।
टेलर स्पार्क

21

बस "विंडोज स्क्रिप्टिंग का उपयोग करें" उत्तरों पर विस्तार करने के लिए (जो मैं सबसे अच्छा विचार करता हूं क्योंकि यह पहले से ही निर्मित है) यहां एक रैपर स्क्रिप्ट का उपयोग करके और "वास्तविक" बैच फ़ाइल का नाम एक पैरामीटर के रूप में पास करके कैसे किया जाए। अतिरिक्त मापदंडों को बैच फ़ाइल में पारित किया जाएगा।

If WScript.Arguments.Count >= 1 Then
    ReDim arr(WScript.Arguments.Count-1)
    For i = 0 To WScript.Arguments.Count-1
        Arg = WScript.Arguments(i)
        If InStr(Arg, " ") > 0 Then Arg = """" & Arg & """"
      arr(i) = Arg
    Next

    RunCmd = Join(arr)
    CreateObject("Wscript.Shell").Run RunCmd, 0, True
End If

इसलिए उदाहरण के लिए उपरोक्त फ़ाइल को NoShell.vbsकहीं और सेव करें:

NoShell.vbs c:\foo\my_batch_file.bat

अंत में, यदि आप इसे कहीं से चलाना चाहते हैं, जो .vbs फ़ाइल (जैसे कि Visual Studio में "बाहरी उपकरण") को नहीं समझता है, तो आप C:\Windows\System32\wscript.exevbs फ़ाइल को इसके पहले पैरामीटर और आपके साथ कॉल करना चाहेंगे दूसरे के रूप में बैच फ़ाइल।


6
उन लोगों के लिए जो प्रत्येक नई बैट फाइल के लिए एक नई vbs फाइल बनाने के विचार और अवधारणा को नापसंद करते हैं, जैसा कि शीर्ष दो उत्तरों में से किसी एक का उपयोग करना होगा, यह सही समाधान है। कई vbs फ़ाइलों के बजाय, आपके पास कई शॉर्टकट होंगे। प्रत्येक नई बैट फ़ाइल के लिए, vbs फ़ाइल का एक शॉर्टकट बनाएं, उस पर राइट क्लिक करें, गुण> शॉर्टकट टैब चुनें, और लक्ष्य बॉक्स में पहले से मौजूद पथ के बाद बैट फ़ाइल के पथ में प्रवेश करें, जैसा कि ऊपर या नीचे दिखाया गया है यदि शॉर्टकट vbs फ़ाइल के समान स्थान पर नहीं है "C:\My Files\HideCmd.vbs" c:\foo\my_batch_file.bat:।
रोलो सेप

यदि बैट फ़ाइल के फ़ाइल पथ में स्थान है, तो इसे vbs फ़ाइल के शॉर्टकट के माध्यम से कैसे कहा जा सकता है? उदाहरण के लिए "C:\My Files\HideCmd.vbs" c:\my things\my_batch_file.bat:। कोई फर्क नहीं पड़ता कि मैं रास्ते के लिए क्या कोशिश करता हूं - इसके चारों ओर दोहरे उद्धरण, अंतरिक्ष के स्थान पर% 20, या उन दोनों का संयोजन, कुछ भी काम नहीं करता है। मुझे एक त्रुटि संदेश मिला है जिसमें मुझे बताया गया है कि फ़ाइल नहीं मिल सकती है या कुछ भी नहीं होता है। क्या यह मेरे अंत में उपयोगकर्ता की त्रुटि के कारण है, शॉर्टकट के लिए लक्ष्य फ़ील्ड के साथ एक Windows सीमा, या vbs स्क्रिप्ट के साथ एक समस्या जिसमें यह रिक्त स्थान के साथ फ़ाइल पथ को ठीक से संभाल नहीं करता है?
रोलो सेप

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

9

आप कम से कम चलाने के लिए शॉर्टकट के गुणों को बदल सकते हैं।

इसे पूरी तरह से अदृश्य रूप से चलाने के लिए आपको कुछ और की आवश्यकता होगी, जैसे विंडोज स्क्रिप्टिंग।


1
आपका पहला सुझाव वह तरीका है जो मैंने हमेशा किया है।
मार्टिउ

8

'/ B' विकल्प से शुरुआत करें । उदाहरण के लिए:

@echo off
start /B go.bat

25
start /bबस एक नया स्पॉन बनाने के बजाय वर्तमान में आवंटित कंसोल में प्रोग्राम चलाएगा। आपको वैसे भी एक नया मिलेगा क्योंकि बैच को cmd के साथ चलना होगा (जो बदले में [आश्चर्य], एक कंसोल खोलता है)।
जॉय

@ हाँ, लेकिन यह शेल निष्पादन (जैसे SYSTEMC / C ++) के माध्यम से अन्य अनुप्रयोगों से बैच फ़ाइलों को लॉन्च करने के लिए बहुत उपयोगी है ।
टॉम ज़ातो

1
@ TomášZato: आप बस उस मामले में सीधे बैच फ़ाइल को कॉल कर सकते हैं, या, जो कुछ भी आप एक प्रक्रिया को स्पॉन करने के लिए उपयोग करते हैं वह पहले एक शेल नहीं बनाता है, उपयोग करें cmd /c foo.cmdstartउन परिदृश्यों में उपयोग करने की बिल्कुल आवश्यकता नहीं है, और, मेरा तर्क है कि systemइसका उपयोग पक्ष में नहीं किया जाना चाहिए CreateProcess। एक बैच फ़ाइल लॉन्च करके, आप पहले से ही एक मंच पर निर्भर हैं, आप नौकरी के लिए बेहतर टूल का उपयोग कर सकते हैं।
जोए

@ जॉय धन्यवाद एक गुच्छा, cmd /cपहले कभी नहीं सुना । सीएमडी कमांड वह है जो मुझे अपने मामले में चाहिए था, लेकिन सभी स्टैकएक्सचेंज उत्तर मुझे अब तक मिले, एक बैच फ़ाइल के बारे में, जो एक और बैच फ़ाइल चल रही है, शुरू करने के लिए शीर्ष उत्तर हैं ...
T_D

start /b go.bat एक नया कंसोल (यानी विंडोज 7 से पहले csrss..exe में एक धागा या conrs.exe का एक धागा) आवंटित नहीं करेगा । हालाँकि यह एक स्क्रिप्ट गड़बड़ कर देगा क्योंकि बैच स्क्रिप्ट cmd.exe के एक नए उदाहरण के साथ चलाई जाती है जो एक ही कंसोल से जुड़ी होती है । शेल के दोनों उदाहरण कंसोल से इनपुट को पढ़ने के लिए प्रतिस्पर्धा करेंगे, आमतौर पर वैकल्पिक। यह जरूरत है /w(उदाहरण के लिए start /b /w go.batआदेश दूसरे उदाहरण है, जो उपयोग करने के समान है पर इंतजार करने के लिए) cmd /cयदि का उपयोग करते हुए system। इसके अलावा, यदि आप कॉल कर रहे हैं, तो सीधे CreateProcessचलाएं go.bat। इसकी कोई आवश्यकता नहीं है cmd /c
एरिक सन

6

नि: शुल्क जीपीएल खुला स्रोत "हिडन प्रोसेस बनाएँ"

http://www.commandline.co.uk/chp/

Microsoft सुरक्षा आवश्यकताएँ, और संभवत: अधिकांश अन्य वायरस / मैलवेयर स्कैनर निष्पादन योग्य, chp.exe को एक वायरस के रूप में मानेंगे, क्योंकि यह जो भी प्रोग्राम आपको विंडो या टास्क बार बटन को प्रदर्शित करने से छिपाता है, ठीक उसी तरह जैसे वायरस करते हैं।

यह वायरस नहीं है। यह उदाहरण के लिए कार्य प्रबंधक में प्रदर्शित होने से लक्ष्य प्रक्रिया को छिपाता नहीं है। और निश्चित रूप से स्रोत कोड शामिल है इसलिए आप देख सकते हैं कि यह बहुत छोटा है और कुछ भी नहीं करता है लेकिन जो भी प्रोग्राम आप इसे देते हैं उसे चलाएं।

आपको यह भी भरोसा नहीं करना है कि शामिल chp.exe वास्तव में उस स्रोत से बनाया गया था। आप आगे जा सकते हैं और शामिल chp.exe को छोड़ सकते हैं और स्रोत से अपना खुद का संकलन कर सकते हैं, और ऐसा करने के लिए सभी आवश्यक उपकरण भी मुफ्त और डाउनलोड करने योग्य हैं।


आप बस .bat या .cmd फ़ाइल का शॉर्टकट भी बना सकते हैं, फिर शॉर्टकट, गुण, शॉर्टकट टैब, रन: मिनीमाइज़ पर राइट-क्लिक करें। फिर अनुसूचित कार्यों में, सीधे .bat / .cmd फ़ाइल के बजाय शॉर्टकट का उपयोग करें। यह एक विंडो को पॉप अप करने से रोकेगा, लेकिन एक टास्कबार बटन अभी भी दिखाई देगा।


6

आप ऑटो स्क्रिप्ट जैसे विंडो स्क्रिप्टिंग का उपयोग कर सकते हैं ।

एक उदाहरण के रूप में, बस इसे AutoIt स्क्रिप्ट संपादक में लिखें। यह काफी सरल है

Run("C:\test\batchfile.bat", "", @SW_HIDE)

यदि आप इसे लूप में चलाना चाहते हैं,

$x=0
Do
 Run("C:\test\batchfile.bat", "", @SW_HIDE)
 Sleep(5000)
Until $x = 1

इसे .exe के रूप में संकलित करें - और आप कर रहे हैं।


इसी तरह, ऑटोटेक में :

#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide 

5

हिडन स्टार्ट का उपयोग करें (लागत $ 20)

छुपी हुई शुरुआत - कंसोल विंडो या यूएसी प्रॉम्प्ट के बिना एप्लिकेशन और बैच फाइलें चलाएं

कंसोल एप्लिकेशन और बैच फाइलें नियमित रूप से विंडोज स्टार्टअप या एक शेड्यूल में चलाई जाती हैं। इसकी मुख्य असुविधा यह है कि प्रत्येक एप्लिकेशन एक कंसोल विंडो खोलता है जो स्क्रीन पर फ़्लिकर करता है। हिडन स्टार्ट (या हस्टार्ट) एक हल्की कमांड लाइन उपयोगिता है जो आपको पृष्ठभूमि में बिना किसी विंडो के कंसोल एप्लिकेशन और बैच फ़ाइलों को चलाने की अनुमति देती है, विंडोज 7 और विस्टा के तहत यूएसी विशेषाधिकार ऊंचाई को संभालें, समानांतर या समकालिक रूप से कई कमांड शुरू करें, और बहुत कुछ ।

यहां छवि विवरण दर्ज करें


यह एक बहुत अच्छी तरह से डिजाइन और उपयोगी अनुप्रयोग है।
गुरु जोश

5

बिना किसी अतिरिक्त कार्यक्रमों का उपयोग किए, सरल समाधान।

  1. आप जिस बैच फ़ाइल को निष्पादित और परीक्षण करना चाहते हैं, उसे बनाएं।
  2. इसके लिए एक शॉर्टकट बनाएं।
  3. शॉर्टकट के गुणों को संपादित करें: शॉर्टकट टैब में, रन मिनीमाइज़ चुनें। एक गर्म कुंजी असाइन करें और आप कर रहे हैं!

सौभाग्य!


7
यह ओपी की समस्या का हल नहीं है। वहाँ के बीच एक अंतर है कम करने और छिपा
nixda

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

यह मेरी समस्या का एक अच्छा और साफ समाधान है! धन्यवाद!
dmitry_romanov

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