इस सवाल का पहले से ही यहाँ एक जवाब है:
विंडोज एक्सपी पर, क्या मैं "ब्लैक विंडो" के बिना शॉर्टकट के माध्यम से एक बैच (.bat या .cmd) फ़ाइल चला सकता हूं?
इस सवाल का पहले से ही यहाँ एक जवाब है:
विंडोज एक्सपी पर, क्या मैं "ब्लैक विंडो" के बिना शॉर्टकट के माध्यम से एक बैच (.bat या .cmd) फ़ाइल चला सकता हूं?
जवाबों:
उदाहरण के लिए, 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
.bat
इस पद्धति का उपयोग करके फ़ाइल को व्यवस्थापक के रूप में कैसे चलाएं ?
यह शाजी के उत्तर का सिर्फ एक सरलीकरण है। आप अपनी बैच स्क्रिप्ट को VBScript (.vbs) स्क्रिप्ट के माध्यम से इस तरह चला सकते हैं :
'HideBat.vbs
CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True
यह आपकी बैच फ़ाइल को बिना किसी कमांड विंडो के निष्पादित करेगा।
.bat
इस पद्धति का उपयोग करके व्यवस्थापक के रूप में फ़ाइल कैसे चलाएं ?
बस "विंडोज स्क्रिप्टिंग का उपयोग करें" उत्तरों पर विस्तार करने के लिए (जो मैं सबसे अच्छा विचार करता हूं क्योंकि यह पहले से ही निर्मित है) यहां एक रैपर स्क्रिप्ट का उपयोग करके और "वास्तविक" बैच फ़ाइल का नाम एक पैरामीटर के रूप में पास करके कैसे किया जाए। अतिरिक्त मापदंडों को बैच फ़ाइल में पारित किया जाएगा।
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.exe
vbs फ़ाइल को इसके पहले पैरामीटर और आपके साथ कॉल करना चाहेंगे दूसरे के रूप में बैच फ़ाइल।
"C:\My Files\HideCmd.vbs" c:\foo\my_batch_file.bat
:।
"C:\My Files\HideCmd.vbs" c:\my things\my_batch_file.bat
:। कोई फर्क नहीं पड़ता कि मैं रास्ते के लिए क्या कोशिश करता हूं - इसके चारों ओर दोहरे उद्धरण, अंतरिक्ष के स्थान पर% 20, या उन दोनों का संयोजन, कुछ भी काम नहीं करता है। मुझे एक त्रुटि संदेश मिला है जिसमें मुझे बताया गया है कि फ़ाइल नहीं मिल सकती है या कुछ भी नहीं होता है। क्या यह मेरे अंत में उपयोगकर्ता की त्रुटि के कारण है, शॉर्टकट के लिए लक्ष्य फ़ील्ड के साथ एक Windows सीमा, या vbs स्क्रिप्ट के साथ एक समस्या जिसमें यह रिक्त स्थान के साथ फ़ाइल पथ को ठीक से संभाल नहीं करता है?
'/ B' विकल्प से शुरुआत करें । उदाहरण के लिए:
@echo off
start /B go.bat
start /b
बस एक नया स्पॉन बनाने के बजाय वर्तमान में आवंटित कंसोल में प्रोग्राम चलाएगा। आपको वैसे भी एक नया मिलेगा क्योंकि बैच को cmd के साथ चलना होगा (जो बदले में [आश्चर्य], एक कंसोल खोलता है)।
SYSTEM
C / C ++) के माध्यम से अन्य अनुप्रयोगों से बैच फ़ाइलों को लॉन्च करने के लिए बहुत उपयोगी है ।
cmd /c foo.cmd
। start
उन परिदृश्यों में उपयोग करने की बिल्कुल आवश्यकता नहीं है, और, मेरा तर्क है कि system
इसका उपयोग पक्ष में नहीं किया जाना चाहिए CreateProcess
। एक बैच फ़ाइल लॉन्च करके, आप पहले से ही एक मंच पर निर्भर हैं, आप नौकरी के लिए बेहतर टूल का उपयोग कर सकते हैं।
cmd /c
पहले कभी नहीं सुना । सीएमडी कमांड वह है जो मुझे अपने मामले में चाहिए था, लेकिन सभी स्टैकएक्सचेंज उत्तर मुझे अब तक मिले, एक बैच फ़ाइल के बारे में, जो एक और बैच फ़ाइल चल रही है, शुरू करने के लिए शीर्ष उत्तर हैं ...
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
।
नि: शुल्क जीपीएल खुला स्रोत "हिडन प्रोसेस बनाएँ"
http://www.commandline.co.uk/chp/
Microsoft सुरक्षा आवश्यकताएँ, और संभवत: अधिकांश अन्य वायरस / मैलवेयर स्कैनर निष्पादन योग्य, chp.exe को एक वायरस के रूप में मानेंगे, क्योंकि यह जो भी प्रोग्राम आपको विंडो या टास्क बार बटन को प्रदर्शित करने से छिपाता है, ठीक उसी तरह जैसे वायरस करते हैं।
यह वायरस नहीं है। यह उदाहरण के लिए कार्य प्रबंधक में प्रदर्शित होने से लक्ष्य प्रक्रिया को छिपाता नहीं है। और निश्चित रूप से स्रोत कोड शामिल है इसलिए आप देख सकते हैं कि यह बहुत छोटा है और कुछ भी नहीं करता है लेकिन जो भी प्रोग्राम आप इसे देते हैं उसे चलाएं।
आपको यह भी भरोसा नहीं करना है कि शामिल chp.exe वास्तव में उस स्रोत से बनाया गया था। आप आगे जा सकते हैं और शामिल chp.exe को छोड़ सकते हैं और स्रोत से अपना खुद का संकलन कर सकते हैं, और ऐसा करने के लिए सभी आवश्यक उपकरण भी मुफ्त और डाउनलोड करने योग्य हैं।
आप बस .bat या .cmd फ़ाइल का शॉर्टकट भी बना सकते हैं, फिर शॉर्टकट, गुण, शॉर्टकट टैब, रन: मिनीमाइज़ पर राइट-क्लिक करें। फिर अनुसूचित कार्यों में, सीधे .bat / .cmd फ़ाइल के बजाय शॉर्टकट का उपयोग करें। यह एक विंडो को पॉप अप करने से रोकेगा, लेकिन एक टास्कबार बटन अभी भी दिखाई देगा।
आप ऑटो स्क्रिप्ट जैसे विंडो स्क्रिप्टिंग का उपयोग कर सकते हैं ।
एक उदाहरण के रूप में, बस इसे 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
हिडन स्टार्ट का उपयोग करें (लागत $ 20)
छुपी हुई शुरुआत - कंसोल विंडो या यूएसी प्रॉम्प्ट के बिना एप्लिकेशन और बैच फाइलें चलाएं
कंसोल एप्लिकेशन और बैच फाइलें नियमित रूप से विंडोज स्टार्टअप या एक शेड्यूल में चलाई जाती हैं। इसकी मुख्य असुविधा यह है कि प्रत्येक एप्लिकेशन एक कंसोल विंडो खोलता है जो स्क्रीन पर फ़्लिकर करता है। हिडन स्टार्ट (या हस्टार्ट) एक हल्की कमांड लाइन उपयोगिता है जो आपको पृष्ठभूमि में बिना किसी विंडो के कंसोल एप्लिकेशन और बैच फ़ाइलों को चलाने की अनुमति देती है, विंडोज 7 और विस्टा के तहत यूएसी विशेषाधिकार ऊंचाई को संभालें, समानांतर या समकालिक रूप से कई कमांड शुरू करें, और बहुत कुछ ।
बिना किसी अतिरिक्त कार्यक्रमों का उपयोग किए, सरल समाधान।
सौभाग्य!