2015-10-19 2 views
5

निष्पादित करना जारी नहीं रखता है। मैं gulp प्रोजेक्ट और maven प्रोजेक्ट बनाने के लिए एक साधारण बैच फ़ाइल लिखने का प्रयास कर रहा हूं।बैच स्क्रिप्ट 'gulp` प्रक्रिया पूर्ण होने के बाद निष्पादन रोकता है, शेष स्क्रिप्ट

वर्तमान फ़ाइल प्रकार है:

cd C:\my\file\path 
cmd /k gulp maven-deploy-local 
cd C:\my\file\path\two\project-pom-parent 
cmd /k mvn clean install -Dmaven.test.skip=true 

जब भी मैं इस स्क्रिप्ट को चलाने, कमांड लाइन लाइन 2 के बाद बंद हो जाता है और लाइन 3. इससे पहले कि मैं अंत में एक निमिष कर्सर के साथ cmd में इस लाइन को देख:

C: \ मेरे \ फ़ाइल \ पथ>

अगर मैं (इस प्रकार) cmd /k बिना फ़ाइल को चलाने के तो शीघ्र बस ग लाइन 2 के बाद और लाइन 3.

cd C:\my\file\path 
gulp maven-deploy-local 
cd C:\my\file\path\two\project-pom-parent 
mvn clean install -Dmaven.test.skip=true 

इतना है कि यह जारी रहेगा और लाइनों 3 और 4 पर आदेश पर अमल और उसके बाद निम्न पंक्ति और निमिष कर्सर के साथ खुले रहते हैं मैं कैसे बैच स्क्रिप्ट को संशोधित करने से पहले खो देता है?

C: \ मेरे \ फ़ाइल \ पथ \ दो \ परियोजना-पोम-माता पिता>

मैं विंडोज 7 पर काम कर रहा हूँ 64-बिट

उत्तर

7

यह काम नहीं है इसका उपयोग करने के लिए पर्याप्त विशिष्ट:

cd /d "C:\my\file\path" 
cmd /c gulp maven-deploy-local 
cd /d "C:\my\file\path\two\project-pom-parent" 
cmd /k mvn clean install -Dmaven.test.skip=true 

संक्षेप में पहले cmd /k को cmd /c में बदला जा सकता है, इसलिए यह आदेश निष्पादित करता है और अंतिम आदेश जारी रहता है, जो शीघ्र खोलता है।

+0

यह समाधान समझने, उपयोग करने और बनाए रखने के लिए बहुत आसान है। धन्यवाद! –

+0

हां जो फॉक्सिड्राइव समझ में आता है। पहला सीएमडी/सी एक और वातावरण खोलता है, इसलिए इसे निष्पादित करने के बाद मूल वातावरण में वापस आ जाता है। मुझे याद नहीं है कि हम तर्क के साथ क्यों आए थे जिसका इस्तेमाल मैंने किया था जिसे मुझे डॉसटिप्स प्रश्न से याद आया था। – Squashman

+0

@ स्क्वैशमैन आप सही हैं - और यदि उपयोगकर्ता को gulp कमांड में सेट किए गए पर्यावरण चर का उपयोग करने की आवश्यकता है तो 'cmd/c' उन्हें स्क्रिप्ट पर वापस नहीं भेजेगा। – foxidrive

3
@ECHO OFF 
IF NOT "%1"=="1" CMD /K ""%~f0" 1" 
CD /d C:\my\file\path 
CALL gulp maven-deploy-local 
CD /d C:\my\file\path\two\project-pom-parent 
CALL mvn clean install -Dmaven.test.skip=true 
+0

यह समाधान काम करता है, धन्यवाद। अगर आप लाइनों के क्या कर रहे हैं, तो स्पष्टीकरण शामिल करते हैं, तो मैं जवाब को ऊपर उठाऊंगा और स्वीकार करूँगा ताकि मैं भविष्य में यहां दिए गए टूल का उपयोग कर सकूं :)। –

+0

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

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