2010-12-08 11 views
24

मैं एक बैच फ़ाइल है कि चींटी और फिर प्रतियां फ़ाइलें जो उत्पादन किया गया था में से एक चलाता है:एक बैच फ़ाइल से चींटी चल रहा है: बाद में आदेशों को चलाने के नहीं है

ant -Dproject.version=1.1.2 release published 
copy /Y D:\dir1\MyJar.jar D:\dir2\MyJar.jar 

जब मैं बैच फ़ाइल चलाने के लिए, चींटी सफलतापूर्वक चलता है, लेकिन प्रतिलिपि कथन कभी नहीं होता है, हालांकि अगर मैं इसे टाइप करता हूं और एंटी टास्क समाप्त होने के बाद एंटर दबाता हूं तो यह ठीक काम करेगा।

यहां क्या हो रहा है?

+0

"कभी नहीं होता" - बिना किसी संदेश के? हो सकता है कि निर्देशिका चलाना वही नहीं है जैसा आप इसे मैन्युअल रूप से चलाने का प्रयास करते हैं? – khachik

उत्तर

43

मुझे एक ही समस्या थी और जादू call ने किया था।

तुम्हारा कि बैच फ़ाइल में प्रयास करें:

call ant -Dproject.version=1.1.2 release published 
copy /Y D:\dir1\MyJar.jar D:\dir2\MyJar.jar 

आप क्यों यह काम किया है, हालांकि यह नहीं बता सकते हैं। मान लें कि यह माइक्रोसॉफ्ट तर्क है।

+16

ऐसा इसलिए है क्योंकि 'चींटी' बैच फ़ाइल है। यदि आप एक बैच को दूसरे से कॉल कर रहे हैं तो आपको 'कॉल' का उपयोग करने की आवश्यकता है। लेकिन हाँ, यह कभी-कभी बहुत स्पष्ट नहीं होता है। – Joey

+0

यह तब तक काम करता है जब तक आप किसी फ़ाइल को चींटी के आउटपुट को निर्देशित नहीं करते हैं: एंटी लक्ष्य को कॉल करें >> log.log। फिर यह जारी नहीं है। – Ixx

8

जब आप एक-दूसरे बैच फ़ाइल (जो हमेशा स्पष्ट नहीं है) कहते हैं आप CALL (या call) का उपयोग करने वाले रहे हैं, अन्यथा यह अधिक goto तरह काम करता है और वापस फोन करने वाले के लिए वापस नहीं करता है। ant वास्तव में एक बैच फ़ाइल ant.bat है? यह तब काम करना चाहिए:

CALL ant -Dproject.version=1.1.2 release published 
संबंधित मुद्दे