2010-11-27 2 views
5

लगता मैं इस निर्देशिका ज़िप करना चाहते 〔c:/उपयोगकर्ताओं/XAH/ErgoEmacs_Source/ergoemacs/निर्माण util /〕रूट पथ रिकॉर्ड किए बिना ज़िप बना रहा है; प्रोग्राम के रूप में

और मेरी मैं चाहता हूँ उत्पादन dir 〔ग होने के लिए:/उपयोगकर्ताओं/XAH/xx2 /〕

(एक elisp कार्यक्रम में मेरे वर्तमान dir कहीं भी हो सकता है। मैं फोन कर रहा हूँ ज़िप) तो मैं

zip -r c:/Users/xah/xx2/build-util.zip c:/Users/xah/ErgoEmacs_Source/ergoemacs/build-util/ 

तो ज़िप इस

+०१२३५१६४१० की तरह पूरा पथ रिकॉर्ड करेगा करना
adding: Users/xah/ErgoEmacs_Source/ergoemacs/build-util/ (stored 0%) 
adding: Users/xah/ErgoEmacs_Source/ergoemacs/build-util/.svn/ (stored 0%) 
adding: Users/xah/ErgoEmacs_Source/ergoemacs/build-util/.svn/all-wcprops (deflated 56%) 
... 

मैं पथों को बस निर्माण के साथ शुरू करना चाहता हूं।

नोट: मैं एक प्रोग्राम (elisp) में ज़िप को बुला रहा हूं और मैं envirenment चर की किसी भी अवधारणा का उपयोग नहीं करना चाहता हूं या नहीं।

क्या यह कुछ ज़िप पैरामीटर के साथ संभव है?

+1

AFAIK ज़िप के लिए कोई टैर-सी विकल्प नहीं है, इसलिए आपको इसे निष्पादित करने से पहले वर्तमान निर्देशिका को बदलने की आवश्यकता होगी। – tokland

+0

हम्म ... 'सीडी सी:/उपयोगकर्ता/xah/ErgoEmacs_Source/ergoemacs; ज़िप ... ', यह सापेक्ष पथ देता है, क्या आपको इसकी आवश्यकता है? elisp का उपयोग कर संभव है? – ajreal

+0

धन्यवाद। मुझे लगता है कि टोकैंडलैंड ने इसका उत्तर दिया। मैं पहले डीआईआर को सीडी नहीं करना चाहता था कि समस्या है। –

उत्तर

4

विचित्र रूप से पर्याप्त है, जावा जेडीके से जार का उपयोग करने का आपका सबसे अच्छा विकल्प हो सकता है।

जार-सीएमएफ सी: /Users/xah/xx2/build-util.zip -C सी:/उपयोगकर्ता/xah/ErgoEmacs_Source/ergoemacs/build-util /।

"-एम" जार को एक प्रकट फ़ाइल बनाने के लिए नहीं बताता है और -C फाइलों को ज़िप करने से पहले निर्देशिकाओं को बदलने के लिए कहता है। प्रलेखन मैं के बंद इस आधार पर यहाँ है: http://download.oracle.com/javase/tutorial/deployment/jar/build.html

+0

वैसे, जावा जार संग्रह केवल एक ज़िप फ़ाइल है कुछ प्रकट जानकारी। –

4

मेरी पसंदीदा बैश कार्यों में से एक pushd है, यह dirrectory आप में हैं बचाता है और निर्देशिका आप तय कर सकते हैं ले जाता है। पारस्परिक कार्य पॉपड है, यह आपको वापस उस निर्देशिका में ले जाता है जो आप पुशड से पहले थे। उदाहरण के लिए आप

pushd c:/Users/xah/ErgoEmacs_Source/ergoemacs 
zip -r c:/Users/xah/xx2/build-util.zip build-util/ 
popd 

मुझे लगता है कि आप जो चाहते हैं उसके साथ हवाएं करते हैं।