2009-01-04 11 views

उत्तर

33

मैं StackOverflow सवाल में run a batch file in the background (no DOS windows displayed)

के लिए एक रास्ता है कि आपके सवाल का जवाब चाहिए का प्रस्ताव किया है।

यहाँ

यह है:

    :

    wscript.exe invis.vbs run.bat %* 
    

    असल में, आप के साथ एक vbs स्क्रिप्ट बुला रहे हैं:


    अपनी पहली स्क्रिप्ट से, निम्न पंक्ति के साथ अपने दूसरे पटकथा फोन

  • आपकी स्क्रिप्ट का [पथ] \ नाम
  • अन्य सभी

    • intWindowStyle:: 0 का अर्थ है "अदृश्य खिड़कियों"
    • bWaitOnReturn: झूठी अपनी स्क्रिप्ट की जरूरत तर्क (%*)

    फिर, invis.vbs Windows Script Host Run() method साथ अपनी स्क्रिप्ट है, जो लेता कॉल करेंगे अपनी पहली स्क्रिप्ट अपने दूसरे पटकथा

समाप्त होने की प्रतीक्षा की जरूरत नहीं है पूर्ण invis.vbs स्क्रिप्ट के लिए प्रश्न देखें का मतलब है:

Set WshShell = WScript.CreateObject("WScript.Shell") 
WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False 
                 ^
          means "invisible window" ---| 

Tammen के फीडबैक के बाद अद्यतन:

आप एक डॉस सत्र में रहे हैं और आप "पृष्ठभूमि में" एक और स्क्रिप्ट लॉन्च करना चाहते हैं, एक सरल /b (के रूप में same aforementioned question में विस्तृत) हो सकता है, तो पर्याप्त:

आप start /b second.bat अपने पहले अपने पहले एक की खिड़की प्रयोग करती है, से एसिंक्रोनस रूप से एक दूसरे बैच फ़ाइल शुरू करने के लिए उपयोग कर सकते हैं।

+0

क्या यह केवल डॉस कमांड का उपयोग करके किया जा सकता है? – rplusg

+0

@calvin: इस उत्तर का दूसरा भाग केवल एक डॉस कमांड दिखाता है। आपके संदर्भ के आधार पर, आप डॉस कमांड के साथ मूक मोड में एक स्क्रिप्ट चला सकते हैं (साथ ही http://stackoverflow.com/questions/298562 में उत्तरों द्वारा विस्तृत) – VonC

+0

@Shf संपादन के लिए धन्यवाद। – VonC

34

सही अपने बल्ले स्क्रिप्ट के शीर्ष पर वाक्यांश

@echo off

शामिल करें।

+0

संपादन moocha के लिए धन्यवाद। –

+6

इसे थोड़ा सा सुधार (प्रारूपण, सामने @ जोड़ा गया ताकि इको स्टेटमेंट स्वयं आउटपुट का कारण न हो।) हालांकि, यह आउटपुट कमांड से आउटपुट को नहीं रोकेगा। आउटपुट को रीडायरेक्ट करने के लिए> एनयूएल 2> एनयूएल कॉलिंग पर ऐसा करेगा। –

+0

हे, आपका स्वागत है। क्रॉस्ड टिप्पणियां :) –

4

SilentCMD की कोशिश करो। यह एक छोटा फ्रीवेयर प्रोग्राम है जो कमांड प्रॉम्प्ट विंडो प्रदर्शित किए बिना बैच फ़ाइल निष्पादित करता है।

7

उन्नत बैट उपयोग EXE करने के लिए कनवर्टर http://www.battoexeconverter.com

से यह तुम अकेले एक स्टैंड पूरी तरह से चुप EXE और करने के लिए अपने बैच फ़ाइल के साथ किसी भी अतिरिक्त बाइनरी एम्बेड कर पाएंगे इसकी फ्रीवेयर

3

तो मैं आदेश चलाना चाहते हैं साइलेंट मोड में शीघ्र, तो एक सरल vbs आदेश है:

Set ws=CreateObject("WScript.Shell") 
ws.Run "TASKKILL.exe /F /IM iexplore.exe" 

अगर मैं करना चाहता था cmd चुपचाप में एक यूआरएल को खोलने के लिए, तो यहाँ एक कोड है:

Set WshShell = WScript.CreateObject("WScript.Shell") 
Return = WshShell.Run("iexplore.exe http://otaxi.ge/log/index.php", 0) 
'wait 10 seconds 
WScript.sleep 10000 
Set ws=CreateObject("WScript.Shell") 
ws.Run "TASKKILL.exe /F /IM iexplore.exe" 
2

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

Const HIDDEN_WINDOW = 12 

strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
Set objStartup = objWMIService.Get("Win32_ProcessStartup") 

Set objConfig = objStartup.SpawnInstance_ 
objConfig.ShowWindow = HIDDEN_WINDOW 
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process") 
errReturn = objProcess.Create("C:\PathOfFile\name.bat", null, objConfig, intProcessID) 

यह निश्चित रूप से मेरे लिए काम करता है। टिप्पणियों का स्वागत है :)

+0

यह वास्तव में अच्छा है! – jony

4

मुझे लगता है कि यह डॉस विंडो खोलने के बिना बैच फ़ाइल चलाने का सबसे आसान और सबसे छोटा समाधान है, जब आप समय-समय पर चलाने के लिए आदेशों का एक सेट शेड्यूल करना चाहते हैं तो यह बहुत विचलित हो सकता है, इसलिए डॉस खिड़की खुलती रहती है, यहां आपका समाधान है। एक VBS स्क्रिप्ट बैच फ़ाइल कॉल करने के लिए

Set WshShell = CreateObject("WScript.Shell") 
WshShell.Run chr(34) & "C:\Batch Files\ mycommands.bat" & Chr(34), 0 
Set WshShell = Nothing 

कॉपी ऊपर लाइनों एक संपादक के लिए उपयोग करें ... और .vbs एक्सटेंशन के साथ फ़ाइल सहेजें। तदनुसार फ़ाइल फ़ाइल और पथ संपादित करें।

+1

सही .. एक आकर्षण की तरह काम करता है – TechDog

4

उपयोग बल्लेबाजी करने Exe कनवर्टर करने के लिए इस

http://download.cnet.com/Bat-To-Exe-Converter/3000-2069_4-10555897.html
(चुनें प्रत्यक्ष डाउनलोड लिंक)

1 - Exe कनवर्टर करने के लिए खोलें चमगादड़, अपने बल्ले फ़ाइल का चयन करें।
2 - विकल्प मेनू में "अदृश्य एप्लिकेशन" का चयन करें, फिर संकलन बटन दबाएं।

हो गया!

संबंधित मुद्दे