2008-10-13 8 views
127

मैं श्रृंखला में कई कार्यों को करने के लिए एक विंडोज cmd स्क्रिप्ट लिखने की कोशिश कर रहा हूं। हालांकि, यह हमेशा स्क्रिप्ट में पहले कमांड के बाद बंद हो जाता है।विंडोज सेमीड स्क्रिप्ट से कई कमांड निष्पादित करना

यह आदेश एक मैवेन बिल्ड के बाद बंद हो जाता है (सुनिश्चित नहीं है कि यह प्रासंगिक है)।

मैं इसे प्रत्येक कार्य को चालू और चलाने के लिए कैसे कर सकता हूं?

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

आदर्श रूप से मैं किसी भी आदेश में विफल होने पर स्क्रिप्ट को निरस्त करना चाहता हूं, लेकिन यह "अच्छा है", आवश्यक नहीं है।

धन्यवाद।

उत्तर

132

जब आप किसी अन्य .bat फ़ाइल कहते हैं, मैं तुम्हें कॉल के सामने "कहते हैं" की जरूरत है:

call otherCommand.bat 
+1

हाय, मूल लिपि में मैं अन्य .cmd फ़ाइलों को नहीं बुला रहा था, लेकिन मैंने इसे अलग फाइलों में विभाजित कर दिया है, इसलिए मैं प्रत्येक को बदले में चला सकता हूं। तो, प्रत्येक आदेश के सामने कॉल डालने से चाल चल रही है, धन्यवाद! –

+0

यह गिट diff कमांड – Bronumski

+5

पर कॉल करते समय मेरे लिए भी काम करता है, वास्तव में, विंडोज़ पर, 'mvn' एक .bat फ़ाइल स्वयं ही है, इस प्रकार आपको' कॉल एमवीएन इंस्टॉल 'के रूप में इसके लिए' कॉल' का उपयोग करने की आवश्यकता है। ; आमतौर पर आपको एक अतिरिक्त cmd फ़ाइल बनाने की आवश्यकता नहीं होती है। – jfpoilpret

1

मैं अपने सवाल का सीधा जवाब नहीं पता, लेकिन आप एक बहुत कुछ कर अगर इन लिपियों में से, यह एक अधिक शक्तिशाली भाषा सीखना लायक हो सकता है जैसे कि पर्ल। विंडोज के लिए नि: शुल्क कार्यान्वयन मौजूद है (जैसे सक्रिय, साइगविन)। मैंने अपने कार्यों के लिए प्रारंभिक प्रयास के लायक पाया है।

संपादित करें:

के रूप में, @Ferruccio ने सुझाव दिया है, तो आप अतिरिक्त सॉफ्टवेयर स्थापित नहीं कर सकता VBScript और/या जावास्क्रिप्ट पर विचार करें। वे विंडोज स्क्रिप्टिंग होस्ट में बने हैं।

+0

धन्यवाद लेकिन मैं किसी भी सॉफ्टवेयर को स्थापित करने में असमर्थ हूं। मेरी इच्छा है कि मुझे क्रैपी विंडोज स्क्रिप्टिंग भाषा की तुलना में कुछ और शक्तिशाली हो। :-( –

+6

आप हमेशा vbscript या जावास्क्रिप्ट का उपयोग कर सकते हैं। वे विंडोज स्क्रिप्टिंग होस्ट में बनाए गए हैं। – Ferruccio

43

आप & & कमांड के बीच प्रतीक केवल दूसरे कमांड को निष्पादित करने के लिए कमांड को निष्पादित करने के लिए उपयोग कर सकते हैं। अधिक जानकारी यहां http://commandwindows.com/command1.htm

+0

धन्यवाद, मैं इसे ऊपर दिए गए स्वीकृत उत्तर के साथ मिलकर कोशिश करूंगा। –

+0

क्या यह दूसरी लिपि के निष्पादन को रोक देगा अगर मेवेन बिल्ड विफल हो जाता है? –

+0

वह लिंक टूटा हुआ है: "बैकएंड सर्वर ने समय पर जवाब नहीं दिया। ऐप सर्वर बहुत व्यस्त है और समय पर अनुरोध संभाल नहीं सकता है।" – mc10

25

सुनिश्चित नहीं है कि पहला आदेश क्यों रोक रहा है। आप इसे समानांतर कर सकते हैं हैं, तो आप की तरह

start cmd.exe /C 1.bat  
start cmd.exe /C 2.bat 
+6

यदि आप अपने आदेश को निष्पादित करने के बाद खोल खोलना चाहते हैं तो '/ C' के बजाय'/K' का उपयोग करें। – JellicleCat

+0

'cmd.exe' और' start' का उपयोग करने की कोई आवश्यकता नहीं है, बस 'x.bat1' शुरू करें। – user66001

1

कुछ आप Windows में चल रहे हैं, तो आप निम्न आदेश का उपयोग कर सकते हैं की कोशिश कर सकते हैं।

ड्राइव:

cd "Script location" 
schtasks /run /tn "TASK1" 
schtasks /run /tn "TASK2" 
schtasks /run /tn "TASK3" 
exit 
19

मैं बस ठीक उसी (ish) Maven परीक्षण स्क्रिप्ट को चलाने के लिए एक बैच स्क्रिप्ट बनाने का कार्य कर रहे हैं। समस्या यह है कि एमवीएन क्लीन इंस्टॉल के साथ मेवेन स्क्रिप्स को कॉल करना ... खुद ही एक स्क्रिप्ट है और इसलिए कॉल एमवीएन क्लीन इंस्टॉल के साथ किया जाना चाहिए।

कोड है कि काम करेंगे

rem run a maven clean install 
cd C:\rbe-ui-test-suite 
call mvn clean install 
rem now run through all the test scripts 
call mvn clean install -Prun-integration-tests -Dpattern=tc-login 
call mvn clean install -Prun-integration-tests -Dpattern=login-1 

नोट कॉल के उपयोग के बजाय। यह बैच फ़ाइल में लगातार मेवेन स्क्रिप्ट के उपयोग की अनुमति देगा।

0

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

2

डबल ऐम्परसेंड का उपयोग करते हुए दूसरा आदेश चला जाएगा, केवल अगर पहले एक सफल होता है:

cd Desktop/project-directory && atom . 

कहाँ के रूप में, केवल एक एम्परसेंड का उपयोग कर भले ही पहले विफल रहता है, दोनों आदेशों को चलाने का प्रयास करेगा:

cd Desktop/project-directory & atom .