2008-12-08 15 views
6

मैं एक बैच फ़ाइल लिख रहा हूं, जिसमें मैं निष्पादित करने के लिए EXE को कॉल करता हूं। अब, EXE को कॉल के बाद कथन निष्पादित नहीं किया जाना चाहिए जब तक कि EXE निष्पादन पूरा नहीं कर लेता है। बैच फ़ाइल (विंडोज़ पर) में मैं इसे कैसे कर सकता हूं?निष्पादन योग्य चलाने के दौरान मुझे विंडोज बैच फ़ाइल को रोकने के लिए कैसे मिलता है?

+0

मुझे लगता है कि यह आपके द्वारा चलाए जा रहे एप्लिकेशन पर थोड़ा सा निर्भर करता है। यदि एप्लिकेशन एक लॉन्चर है जो अन्य सेवाओं या जीयूआई लॉन्च करता है, तो मुझे लगता है कि प्रक्रियाओं और/या विंडोज़ की निगरानी के लिए एप्लिकेशन लिखने के बिना आप बहुत कम कर सकते हैं। उपयोगकर्ता को कुंजी दबाए रखने के लिए –

उत्तर

0

आप

PAUSE 

उपयोग कर सकते हैं बैच पटकथा में, लेकिन मैं अपने प्रश्न समझ में नहीं आता।

+0

'रोकें'। यह एक स्वचालित स्क्रिप्ट के लिए काम नहीं करेगा क्योंकि उपयोगकर्ता वहां नहीं है। जेम्स 'एक स्क्रिप्ट चलाने के लिए एक स्वचालित स्क्रिप्ट चाहता है, इसे खत्म करने और बाहर निकलने के लिए प्रतीक्षा करें, फिर दूसरा प्रोग्राम चलाएं। –

6

बैच फ़ाइल में बयान अनुक्रमिक रूप से निष्पादित किए जाते हैं। तो यदि आपकी बैच फ़ाइल इस तरह दिखती है:

first.exe 
next.exe 

अगला पूरा होने पर अगला निष्पादित किया जाता है।

+0

explorer.exe के साथ आज़माएं और प्रोग्राम को लॉन्च होने के बाद आप इसे वापस देखेंगे, समाप्त नहीं हुआ। – paxdiablo

+0

@ पैक्स: यह प्रश्न के दायरे पर निर्भर करता है। आम तौर पर, बैच फ़ाइल में, आप आम तौर पर केवल कमांड लाइन उपकरण डालते हैं, जीयूआई उपकरण नहीं। – PhiLho

+0

आमतौर पर लेकिन हमेशा नहीं - मेरे पास मेरे वर्क-ऑफ-होम वर्चुअल बॉक्स में स्टार्टअप बैच फ़ाइल है जो ग्राफ़िकल वीपीएन क्लाइंट (तब मेल, बग टूल इत्यादि) शुरू करती है। यह सौभाग्य से एक कमांड लाइन स्विच है जो इसे समाप्त होने तक वापस नहीं लौटाता क्योंकि मैं इसे शुरू करने/प्रतीक्षा करने के लिए इंतजार नहीं कर सका।लेकिन आपका मुद्दा लिया जाता है। – paxdiablo

7

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

दूसरा मामला आसान है क्योंकि फ़ाइल में देर से आदेश पूर्व निष्पादित होने तक निष्पादित नहीं होंगे, इसलिए मुझे लगता है कि आप केस # 1 का सामना कर रहे हैं।

निष्पादन (लगभग) एक बार जब भी चलता है तो एक आसान कामकाज/हैक एक देरी के साथ एक पिंग कमांड का उपयोग करना है।

PING 127.0.0.1 -n 1 -w 120000 >NUL 

यह 120000ms (2 मिनट) देरी के साथ एक बार चलाने के लिए पिंग कमांड को मजबूर करेगा।

fpschultze.de पर एक अधिक जटिल (लेकिन अधिक विश्वसनीय विधि) पर एक और अधिक विस्तृत स्पष्टीकरण के साथ एक अच्छा लेख भी है। संक्षेप में आप जिस निष्पादन योग्य के लिए प्रतीक्षा कर रहे हैं उसे खोजने के लिए कार्य सूची से पूछताछ करें। जैसे ही यह नहीं है आप बैच फ़ाइल के साथ आगे बढ़ते हैं। यह पिंग विधि का भी उपयोग करता है, लेकिन एक अलग तरीके से।

+1

सही तरीका वास्तव में है: PING 127.1 -n 10 -w 1000> NUL – djangofan

+0

@djangofan - आपके सुधार के साथ पूरी तरह से काम किया। – SFun28

+0

क्षमा करें, लेकिन प्रस्तावित पिंग वर्कअराउंड सिर्फ भयानक है। यह त्रुटियों के लिए प्रवण है और समझने में मुश्किल है। कुछ समय के लिए रोकने के लिए बहुत बेहतर तरीके हैं (उदा। टाइमआउट)। – mafu

4

आप पैरामीटर/प्रतीक्षा प्रारंभ/प्रारंभ के साथ "प्रारंभ" कमांड का उपयोग कर सकते हैं? विवरण के लिए कमांडलाइन पर।

+0

जैसा कि मैं कर सकता हूं, कोशिश करें, मैं वास्तव में इंतजार करने के लिए "start/wait explorer.exe" शुरू नहीं कर सका ... – paxdiablo

2

यहां बहुत ही सरल प्रक्रिया है। बस निम्न पंक्ति 10 सेकेंड के लिए प्रतीक्षा करें और फिर अन्य आदेशों जारी रखने के लिए तुम सब करना है कि रखना ...

TIMEOUT /T 10

। मुझे आशा है कि आप मेरी तकनीक का आनंद लेंगे।

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