निर्देशिका नाम के बिना निर्देशिका से एक संग्रह बनाना, संग्रह में जोड़ा जा रहा है


83

मेरे पास निम्नलिखित फ़ोल्डर संरचना है:

  • जड़
    • फ़ोल्डर 1
    • folder2
    • folder3
    • 7za.exe

मैं 7-जिप कमांड लाइन टूल को चलाना चाहता हूं जिसे सभी फाइलों folder1को एक जिप फाइल में संपीड़ित करना है folder1.zip

निम्नलिखित चल रहा है

7za.exe a -tzip folder1.zip folder1\\*.*

अपेक्षा के अनुसार एक ज़िप फ़ाइल बनाता है। हालाँकि, जब मैं ज़िप फ़ाइल खोलता हूँ, तो उसमें एक फ़ोल्डर होता है जिसे कॉल किया जाता है folder1, और उसके अंदर मेरे पास सभी फाइलें होती हैं जो उस फ़ोल्डर के अंदर थीं। मैं नहीं चाहता कि फ़ोल्डर का नाम ज़िप फ़ोल्डर में जोड़ा जाए, अर्थात मैं "फ्लैट" फ़ाइल प्रारूप में सभी फ़ाइलों को जोड़ना चाहूंगा।

मैं भी प्रत्येक व्यक्ति फ़ाइल / फ़ोल्डर के लिए कमांड लाइन टूल को पुनरावर्ती रूप से चलाना नहीं चाहता।

क्या कोई स्विच है जो इस कार्यक्षमता को प्रदान करता है?


आप cdफ़ोल्डर 1 में और कर सकते हैं 7za.exe a -tzip ..\folder1.zip *.*?
17

जवाबों:


136

से 7-Zip मदद फ़ाइल:

a (जोड़ें) कमांड

फ़ाइलों को संग्रह में जोड़ता है।

उदाहरण

7z a archive1.zip subdir\

सभी फाइलों और सबफ़ोल्डरों को फ़ोल्डर सबडिर से आर्काइव1.ज़िप पर संग्रहीत करता है। संग्रह में फ़ाइल नाम में सबडिर / उपसर्ग होगा।

7z a archive2.zip .\subdir\*

सभी फ़ाइलों और सबफ़ोल्डर्स को फ़ोल्डर सबडिर से आर्काइव2.zip पर संग्रहीत करता है। संग्रह में फ़ाइल नाम में उप-प्रादेशिक उपसर्ग नहीं होगा।

cd /D c:\dir1\

7z a c:\archive3.zip dir2\dir3\

आर्काइव c: \kut3.zip में फ़ाइल नाम में dir2 \ dir3 \ prefix होगा, लेकिन इनमें c: \ dir1 \ prefix नहीं होगा।

तो आप चाहते हैं कि आदेश होगा: 7za.exe a folder1.zip .\folder1\*

इसके अलावा, वाइल्डकार्ड की 7-जिप को संभालने पर ध्यान दें। यह *.*"सभी फ़ाइलों" के रूप में व्यवहार नहीं करता है - इसका मतलब है "फ़ाइल नाम की अवधि वाली सभी फाइलें।" एक्सटेंशन-कम फ़ाइलों को याद किया जाएगा। यदि आप वास्तव में सभी फाइलें चाहते हैं, तो *इसके बजाय बस का उपयोग करें ।

अंत में, -tzipपैरामीटर की जरूरत नहीं है अगर संग्रह फ़ाइल नाम में समाप्त होता है .zip। 7-ज़िप यह पता लगाने के लिए पर्याप्त स्मार्ट है कि आप उन मामलों में कौन सा प्रारूप चाहते हैं। यह केवल तभी आवश्यक है जब आप एक कस्टम एक्सटेंशन चाहते हैं (जैसे 7za.exe a -tzip foo.xpi <files>कि मोज़िला ऐड-ऑन के लिए)।


2

इसने मेरे लिए काम किया

C: \ Parent \ SubFolders ..... जैसे फ़ोल्डर संरचना पर विचार करें और आप parent.zip बनाना चाहते हैं जिसमें सभी फ़ाइलें और फ़ोल्डर होंगे C: \ Parent बिना पैरेंट फ़ोल्डर [अर्थात यह सबफ़ोल्डर से शुरू होगा .....]

cd /D "C:\Parent"

"7z.exe" a Parent.zip "*.*" -r

यह C: \ Parent में Parent.zip बनाएगा


2
यह एक और उत्तर को दोहराता है और कोई नई सामग्री नहीं जोड़ता है। कृपया जवाब न दें जब तक कि आपके पास योगदान देने के लिए वास्तव में कुछ नया न हो।
DavidPostill

खैर जब मैं समाधान खोज रहा था तो मुझे यह समाधान ठीक नहीं लगा। जाहिर है मैं सिर्फ कुछ उत्तरों की नकल नहीं करूंगा जो मुझे ऑनलाइन मिले। मैं इस पर कुछ समय बिताता हूं इसलिए मुझे लगा कि मुझे इसे साझा करना चाहिए। मेरे अनुसार आप यहां और मेरे द्वारा पोस्ट किए गए स्टैक ओवरफ्लो पर इसका सटीक उत्तर पा सकते हैं।
प्रितेश ढोचूले 4

ध्यान दें कि 7-ज़िप *.*का मतलब "सभी फाइलें" नहीं है, बल्कि "उन सभी फाइलों को माना जाता है जिनके पास फ़ाइल नाम के एक भाग के रूप में एक अवधि है।" तो यह उत्तर वास्तव में उन फ़ाइलों को छोड़ देगा जिनके पास एक्सटेंशन नहीं है (यह स्वीकृत उत्तर में नोट किया गया है)।
बिल_स्टार्ट

1

बस स्वीकृत उत्तर पर विस्तार करने के लिए (मैं वहाँ टिप्पणी जोड़ने में सक्षम नहीं था):

लिनक्स में '*' जोड़ने से मेरे लिए काम नहीं किया गया, इसलिए मैंने अधिक वर्बोज़ कमांड लाइन को तैयार किया जो वांछित परिणाम देता है:

curr_dir=$(pwd); \ 
cd source_code/lambda/ ; \
7z a ../../lambda.zip .; \
cd $curr_dir \
unset curr_dir

===========

स्क्रिप्ट स्पष्टीकरण:

  • बाद में उपयोग करने के लिए वर्तमान dir पथ को बचाने;
  • निर्देशिका में नेविगेट करें जिसे संग्रहीत करने की आवश्यकता है;
  • संग्रह बनाएं (सूचना '।' (डॉट) अंत में);
  • मूल dir पर वापस जाएं;
  • चर जो मूल dir पथ संग्रहीत से छुटकारा

मुझे उम्मीद है कि यह किसी के लिए उपयोगी हो सकता है।


मैं *उद्धरणों में जगह देने का सुझाव दूंगा (अन्यथा शेल इस स्थान पर फाइलों में इसका विस्तार करेगा)।
साइमन सोबिस्क

-1

इस बारे में कैसा है। जैसे फ़ोल्डर / सबफ़ोल्डर 1, फ़ोल्डर / सबफ़ोल्डर 2

सभी सबफ़ोल्डर का चयन करें> राइट क्लिक करें फिर आर्काइव बनाएं> जो भी प्रारूप चुनें

* संग्रह नाम अभिभावक फ़ोल्डर होगा ..

सरल सही?


3
प्रश्न 7-ज़िप के लिए सीएलआई के बारे में है, न कि जीयूआई का उपयोग कैसे करें। जब आप चीजों को स्वचालित करना चाहते हैं, तो GUI का उपयोग करना सीखना व्यर्थ है।
बिंकी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.