जवाबों:
यदि जावा ऐप समाप्त नहीं होता है (जैसे आप जावा ऐप लॉन्च करने के लिए बैच फ़ाइल का उपयोग कर रहे हैं), तो start
इसे लॉन्च करने के लिए कमांड का उपयोग करें : -
start "" "C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -Xmx1024M -Xms1024M -jar Jilko.jar
यह जावा ऐप लॉन्च करेगा और जावा ऐप के खत्म होने तक इंतजार किए बिना बैच फ़ाइल को निष्पादित करेगा।
स्पष्टीकरण:
यहाँ दिया गया है कि यह कैसे काम करता है; बैच फ़ाइल को एक बार में एक पंक्ति में संसाधित किया जाता है। प्रत्येक कमांड को बारी-बारी से निष्पादित किया जाता है और अगले शुरू करने से पहले बैच प्रोसेसर एक कमांड के समाप्त होने की प्रतीक्षा करता है। जो समस्या आप अनुभव कर रहे हैं, क्योंकि जावा एप्लिकेशन जो आप लॉन्च कर रहे हैं (Jilko.jar) एक विंडो प्रोग्राम है जो इसे लॉन्च करने वाली लाइन के बाद भी चलता रहता है। यदि यह एक उपकरण था जो कुछ कार्रवाई करता है और फिर समाप्त हो जाता है, तो बैच फ़ाइल अगले कमांड पर जारी रहेगी (या यदि कोई अधिक नहीं है तो बाहर निकलें)। क्योंकि प्रोग्राम अभी भी चल रहा है, बैच प्रोसेसर तब तक प्रतीक्षा करता है जब तक कि विंडो को आगे बढ़ने से पहले बंद नहीं किया जाता है। आप जावा प्रोग्राम से बाहर निकलकर इसे एक्शन में देख सकते हैं: बैच फ़ाइल के साथ कंसोल विंडो तब बंद हो जाती है।
समाधान:
इसे ठीक करने के लिए आपको क्या करने की आवश्यकता है, बैच प्रोसेसर को प्रोग्राम लॉन्च करने का निर्देश देना है और इस तरह इंतजार किए बिना जारी रखना है:
start "" "C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -Xmx1024M -Xms1024M -jar Jilko.jar
जैसा कि टेरेन्स ने उल्लेख किया है , ""
कंसोल विंडो के लिए उपयोग करने के लिए शीर्षक है। हालाँकि यह केवल वैकल्पिक है यदि कमांड उद्धरण में नहीं है; अन्यथा आवश्यक है । यदि आप इसे पसंद करते हैं या इसे खाली छोड़ते हैं, तो आप इसमें कुछ डाल सकते हैं, लेकिन यदि कमांड उद्धरण में है, तो यह मौजूद होना चाहिए, अन्यथा कमांड-इंटरप्रेटर उद्धृत कमांड को शीर्षक के रूप में मानेंगे और एक कंसोल खोलेंगे जो बस वहां बैठे इंतजार कर रहे हैं कुछ करने के लिए।
आप इसके बजाय निम्नलिखित कमांड का उपयोग कर सकते हैं, लेकिन उद्धरण केवल आसान और सुरक्षित हैं क्योंकि शॉर्टनेम हर सिस्टम पर समान होने की गारंटी नहीं है।
start C:\Progra~2\Java\jre6\bin\javaw.exe -Xmx1024M -Xms1024M -jar Jilko.jar
start
आदेश है निर्मित एक आदेश है कि spawns एक प्रक्रिया (मूल रूप से प्रारंभ मेनू से एक कार्यक्रम चलाने की तरह)। तो इस संदर्भ में क्या होता है कि बैच प्रोसेसर start
कमांड चलाता है जो बदले में निर्दिष्ट प्रोग्राम चलाता है और समाप्त हो जाता है (स्वयं, स्पॉन प्रोग्राम नहीं)। जैसे, बैच प्रोसेसर उम्मीद के मुताबिक जारी है। इसके कुछ विकल्प भी हैं जो उपयोगी हो सकते हैं जैसे कि प्रोग्राम को कम से कम ( /min
या अधिकतम /max
) चलाने पर, इसे कम प्राथमिकता में चलाना ( /low
) और इसी तरह। start /?
विवरण के लिए देखें।
मैंने पाया है कि मेरे द्वारा चलाए जाने वाले कार्यक्रमों में से कुछ रनिंग प्रक्रियाओं को छोड़ देते हैं, और कंसोल विंडो तब तक बंद नहीं होगी जब तक कि मैं समाप्त नहीं करता अगर मैं उन्हें निष्पादन योग्य लॉन्च करके चलाऊं।
START प्रोग्राम ठीक करता है, लेकिन START के साथ पुरानी समस्या अभी भी है। आप सिर्फ उपयोग नहीं कर सकते:
START "c:\my dir\myfile.exe"
START का पहला पैरामीटर अभी भी विंडो नाम है। यदि आप इसे छोड़ देते हैं, तो आप बस उस सीएमडी कंसोल बॉक्स को खोल सकते हैं जिसका नाम आपने लॉन्च करने की कोशिश की है। उपरोक्त उदाहरण में, अब मेरे पास " c: \ my dir \ myfile.exe " की विंडो शीर्षक के साथ एक कंसोल विंडो होगी । मैं जो चाहता था नहीं!
खिड़की के नाम को छोड़ने के लिए, खाली स्ट्रिंग को परिभाषित करने के लिए बस दोहरे उद्धरण चिह्नों का उपयोग करें:
START "" "c:\my dir\myfile.exe"
अंत में, यह बंद करने के लिए एक EXIT कमांड के साथ अपनी बैच फ़ाइल को समाप्त करें।
यह विधि विंडोज 7 और 8 में लगातार काम करती है।
समस्या निवारण के लिए, मुझे लगता है कि मैं जो करने जा रहा हूं, उसका एक ईसीएचओ जोड़ रहा हूं, फिर जो मैंने अभी किया, उसका एक समय बहुत मदद करता है। उदाहरण के लिए:
ECHO I'm about to launch the program...
START "" "c:\my dir\myfile.exe"
TIMEOUT 5
चूंकि टाइमआउट आपको उलटी गिनती देता है, इसलिए आपको ECHO की आवश्यकता नहीं है कि आप देरी करने वाले हैं।
इसके अलावा - विंडोज 7 के तहत हर समय EXIT का उपयोग करें , जैसा कि बैच फ़ाइल के अंत में हो रहा है, जरूरी नहीं कि इसे समाप्त कर दिया जाए - जैसा कि पहले के विंडोज संस्करणों में था। विंडोज 7 इस के लिए अधिक संवेदनशील हो सकता है कि पहले के NT संस्करण (जैसे Windows 2000 Professional)। यह कुछ में उल्लेख किया गया था, लेकिन पिछले उत्तरों के सभी नहीं ।
उत्तर का समर्थन करने के लिए व्यक्तिगत अनुभव का विवरण:
विंडोज 2000 से विंडोज 7 में StarOffice5.2 इंस्टॉलेशन को स्थानांतरित करने के बाद, मुझे सुइट को समाप्त करने पर मेमोरी स्पेस की त्रुटियां हो रही थीं। यह विंडोज 2000 में नहीं देखा गया था।
बरसों पहले, मैंने स्वचालित रूप से बैक-अप और soffice.ini को पुनर्स्थापित करने के लिए बैच फ़ाइलों को लिखा था, जब यह दूषित हो जाता है तो मरम्मत की अनुमति देने के लिए (अक्सर एक समस्या के लिए पर्याप्त है - सूट लोड करने में विफल रहता है)। स्वत: बैकअप (Office52 \ user \ config \ स्टार्टअप में रखा बैच फ़ाइल के लिए एक कड़ी से शुरू) केवल 5-सेकंड की देरी के बाद के बारे में होता है। मैंने देखा कि जब भी मैं बैच फ़ाइल चलाने से पहले सुइट से बाहर निकलता हूं, तो सुइट की समाप्ति बिना किसी त्रुटि के हुई। यह मुझे बैच फ़ाइलों में एक समस्या की ओर इशारा किया।
बैच फ़ाइलों पर 'EXIT' कमांड को अंतिम पंक्ति के रूप में रखे जाने के बाद, ऑफिस सूट मेमोरी टाइम-एरर मैसेजेस के बिना समाप्त होना शुरू हो गया, हर समय, चाहे बैच फाइल्स चल पड़ी हों या नहीं।
मैं बस एक ही समस्या से निपट रहा था, और आखिरकार यह खुद को हल कर लिया कि बैचफाइल में बेतरतीब बदलाव जैसा क्या लग रहा था- मुझे समझ नहीं आ रहा है लेकिन मैं इसे यहाँ पोस्ट करूँगा क्योंकि यह बाद में किसी और की मदद करता है।
मैं SysInternals Pskill उपयोगिता और नींद की उपयोगिता का उपयोग करता हूं क्योंकि XP होम कमांडलाइन कार्यक्षमता के मामले में बहुत अधिक शामिल नहीं है।
यह बैचफाइल है जो इसके पूरा होने के बाद वास्तव में बंद हो जाता है:
@echo off
start /min C:\Progra~1\PsTools\pskill.exe explorer.exe
start /min C:\Progra~1\PsTools\pskill.exe Powermenu.exe
start /min C:\Progra~1\PsTools\pskill.exe PWGen.exe
start /min C:\Progra~1\PsTools\pskill.exe redshiftgui.exe
start /min C:\Progra~1\PsTools\pskill.exe clipx.exe
sleep 2
start explorer.exe
sleep 3
start C:\Progra~1\ClipX\clipx.exe
sleep 1
start C:\Progra~1\Powermenu\PowerMenu.exe
sleep 1
start /min C:\Progra~1\PWGen\PWGen.exe
sleep 1
start C:\Progra~1\RedshiftGUI\redshiftgui.exe && exit
अगर मेरी पिछली कुछ लाइनें इस तरह से बदल जातीं, तो cmd विंडो तब तक खुली रहती, जब तक मैं कोने में 'X' पर क्लिक नहीं करता:
start C:\Progra~1\RedshiftGUI\redshiftgui.exe
sleep 1
start /min C:\Progra~1\PWGen\PWGen.exe && exit
यहां तक कि जब मैंने खुद को मारने के लिए pskill को आमंत्रित करने का प्रयास किया, तो cmd.exe प्रक्रिया टास्क मैनेजर से गायब हो जाएगी, और pskill अंदर से रिपोर्ट करेगी कि cmd.exe प्रक्रिया है कि cmd.exe प्रक्रिया को मार दिया गया था, फिर भी cmd.exe
विंडो तब तक बनी रहेगी। मैंने कोने में 'X' पर क्लिक किया:
start C:\Progra~1\RedshiftGUI\redshiftgui.exe
sleep 1
start /min C:\Progra~1\PWGen\PWGen.exe
sleep 1
C:\Progra~1\PsTools\pskill.exe cmd.exe
जब मैं && exit
हर लाइन में शामिल हो गया, तो मैंने देखा कि उनमें से कुछ ने इसका जवाब दिया और बैच प्रोसेसिंग को बाधित करेंगे- जबकि अन्य नहीं करेंगे।
इसलिए मैंने केवल एक उत्तरदायी व्यक्ति को अंत में रखा, बजाय इसके कि मैं मूल रूप से कैसा था।
जैसा कि मैंने कहा, मुझे नहीं पता कि क्यों, लेकिन मुझे खुशी है कि यह खत्म हो गया है।
प्रयत्न:
cmd /c "C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -Xmx1024M -Xms1024M -jar Jilko.jar
Windows 2003 में डिफ़ॉल्ट रूप से नियंत्रण कक्ष में कोई "उपयोगकर्ता खाते" नहीं है। मैंने उपयोगकर्ता खाते खोलने के लिए एक छोटा बैच लिखा है:
@echo off
rundll32.exe %SystemRoot%\system32\netplwiz.dll,UsersRunDll
exit
इसने ठीक काम किया, उपयोगकर्ता खाते खोले गए, लेकिन CMD विंडो भी खुली रही। यहाँ कुछ शोध के बाद, मैंने जोड़ा: "" पंक्ति 2 की शुरुआत में ऐसा है:
@echo off
Start "" rundll32.exe %SystemRoot%\system32\netplwiz.dll,UsersRunDll o
exit
अब उपयोगकर्ता खाता विंडो खुलता है, खुला रहता है और CMD विंडो बंद हो जाती है। बहुत आसान।
मैंने विंडोज 7 32-बिट मशीन पर एक नेट उपयोग बैच फ़ाइल बनाई और निष्पादन के बाद बैच फ़ाइल का cmd बाहर नहीं निकलेगा। मैं समान बैच फ़ाइल को किसी अन्य विंडोज 7 64-बिट मशीन पर चलाता हूं और सामान्य रूप से बैच फ़ाइल से बाहर निकलने का सेमी।
मैंने ब्रायन के सुझाव की कोशिश की और यह उस विंडोज 7 32-बिट मशीन पर काम नहीं करता है क्योंकि कोई conhost.exe प्रक्रिया नहीं थी इसलिए मैंने इसे इस प्रकार संशोधित किया:
Taskkill /IM cmd.exe /F
नेट उपयोग बैच फ़ाइल हमेशा सामान्य रूप से बाहर नहीं निकलती है और यह "टर्मिनेट बैच जॉब (Y / N)" की पुष्टि बेतरतीब ढंग से दिखाती है ।
इस सूत्र के अनुसार मैंने बैच फ़ाइल को इस प्रकार संशोधित किया है:
@echo off
if "%~1"=="-FIXED_CTRL_C" (
REM Remove the -FIXED_CTRL_C parameter
SHIFT
) ELSE (
REM Run the batch with <NUL and -FIXED_CTRL_C
CALL <NUL %0 -FIXED_CTRL_C %*
GOTO :EOF
)
net use \\Server\folder
Taskkill /IM cmd.exe /F
नेट उपयोग बैच फ़ाइल अंततः सामान्य रूप से बाहर निकलती है।
nohup
en.wikipedia.org/wiki/Nohup