बैच व्यक्तिगत ज़िप फ़ाइलों में कई फ़ोल्डरों को संपीड़ित करता है


12

मेरे पास दर्जनों फ़ोल्डर हैं जिन्हें मुझे व्यक्तिगत ज़िप फ़ाइलों में संपीड़ित करने की आवश्यकता है।

यदि मैं फाइंडर में इन सभी फ़ोल्डरों का चयन करता हूं और "कंप्रेस [X] आइटम" करता हूं, तो मुझे एक ज़िप फाइल मिलती है, जिसमें सभी फ़ोल्डर्स होते हैं, जबकि मैं चाहता हूं कि प्रति फ़ोल्डर एक ज़िप फाइल हो ।

मैंने "क्रिएट आर्काइव" एक्शन का उपयोग करके ऑटोमेटर के साथ एक वर्कफ़्लो बनाने की कोशिश की, लेकिन यह उसी तरह से व्यवहार करता है: एकाधिक फ़ाइलों / फ़ोल्डरों को इनपुट करना एक सिंगल ज़िप फ़ाइल को आउटपुट करता है। यह निर्दिष्ट करने का कोई तरीका नहीं है कि कार्रवाई प्रत्येक आइटम पर व्यक्तिगत रूप से चलती है।

मूल रूप से, मैं एक समय में हर एक फ़ोल्डर एक पर खोजक में "संपीड़ित" चलाने के लिए बचने का एक रास्ता खोज रहा हूं। क्या इसे स्वचालित करने का कोई तरीका है?


1
मैंने ज़िप संग्रह फ़ाइल नाम को बढ़ाने के लिए उपयोग किए गए कोड को बेहतर बनाने के लिए अपने उत्तर को अपडेट किया ताकि यह पता चले कि कैसे खोजक संदर्भ-मेनू कंप्रेस [एन] आइटम कमांड एक फ़ाइल नाम बढ़ाता है।
user3439894

क्षमा करें, मैंने अनावश्यक को हटाने के लिए एक बार फिर से कोड को अपडेट किया popdऔर एक घातक टाइपो को ठीक किया for i in $bn*.zip; do, जो कि होना चाहिए था for i in $bn *.zip; do। के बीच की जगह नोट $bnऔर *.zip, यह याद आ रही थी और नहीं होना चाहिए था। इसलिए कृपया इसे अपने कार्यान्वयन में अपडेट करें अन्यथा यह उस स्थान पर कदम रखता है File Name 2.zipजब basenameइसमें स्थान होता है।
user3439894

जवाबों:


14

यहाँ एक है स्वचालक सेवा 1 कि में उपलब्ध हो जाता है खोजक जब फ़ोल्डर का चयन किया जाता है और emulates संदर्भ मेनू कम्प्रेस [n] आइटम आदेश को छोड़कर यह एक बनाता है व्यक्ति ज़िप संग्रह फ़ाइल प्रत्येक चयनित के लिए फ़ोल्डर में नाम चयनित फ़ोल्डर । यदि फ़ोल्डर Name.zip फ़ाइल पहले से मौजूद है, तो फ़ाइल नाम में एक " 2"( स्पेस 2) जोड़ा जाता है , जैसे Folder Name 2.zip । यह एक मौजूदा ज़िप संग्रह फ़ाइल सुनिश्चित करता हैस्पर्श नहीं किया गया है और ज़िप संग्रह फ़ाइलनाम स्वचालित रूप से आवश्यक के रूप में बढ़ाया जाएगा।

1 में MacOS मोजावे , और बाद में, एक स्वचालक सेवा एक कहा जाता है त्वरित कार्रवाई । अन्य मामूली नाममात्र अंतर भी हैं, लेकिन जब उन्हें पूर्व-macOS Mojave Automatorflows से तुलना करना अधिक स्पष्ट होना चाहिए।

सेवा बनाने के लिए: 1

  1. ऑटोमेटर खोलें और सेवा का चयन करें 1 या फ़ाइल > नई > सेवा यदि ऑटोमेटर पहले से खुला है।

  2. सेट सेवा चयनित प्राप्त होती है करने के लिए फ़ोल्डर्स और में करने के लिए खोजक

  3. एक जोड़े भागो शैल स्क्रिप्ट कार्रवाई की स्थापना, शैल: करने के लिए / bin / bash और दर्रा इनपुट: करने के लिए तर्क के रूप में और निम्नलिखित जोड़ें कोड :

    for f in "$@"; do
    
        dn="$(dirname "$f")"
        bn="$(basename "$f")"
    
        cd "$dn" || exit
    
        if [[ ! -e "$bn.zip" ]]; then
            ditto -c -k --sequesterRsrc --keepParent "$f" "$bn.zip"
        else
            n=2
            for i in $bn *.zip; do
                if [[ "$bn $n.zip" == "$i" ]]; then
                    n="$(( n + 1 ))"
                fi
            done
            ditto -c -k --sequesterRsrc --keepParent "$f" "$bn $n.zip"
        fi
    
    done
    
    afplay /System/Library/Sounds/Purr.aiff
  4. सेवा को इस रूप में सहेजें : अलग से फ़ोल्डर को संपीड़ित करें

सेवा का उपयोग करने के लिए:

में खोजक या पर डेस्कटॉप एकाधिक चयन फ़ोल्डर , तो राइट क्लिक करें और चुनें कम्प्रेस फ़ोल्डर अलग से नीचे से सेवा

या लक्ष्य फ़ोल्डर का चयन करने के बाद , आप खोजक > पर भी क्लिक कर सकते हैं सर्विसेज > कंप्रेस फोल्डर्स को मेन्यू बार से अलग से ।

आपके पास यह है, अलग-अलग ज़िप अभिलेखागार में एक बार में एक साथ कई फ़ोल्डर को संपीड़ित करने का एक तरीका है और यह पता लगाता है कि फाइंडर कैसे एक ज़िप संग्रह फ़ाइल बनाता है। मतलब कि जिप संग्रह में उपनिर्देशिका __MACOSX में संरक्षित संसाधन कांटे और HFS मेटा-डेटा शामिल है और केवल मूल निर्देशिका नाम स्रोत को एम्बेड करता है गंतव्य-संग्रह , संग्रह बनाने के लिए उपयोग zipकिए बिना (बिना -j) के रूप में पूरी तरह से योग्य पथनाम नहीं ।

अलग से संपीड़ित फ़ोल्डर की छवि

फोल्डर्स को अलग से कंप्रेस करें - ऑटोमेटर सर्विस


मैंने आपके समाधान और @ अबाबाक दोनों की जाँच की। वे बिल्कुल वैसा ही परिणाम देते हैं और अबाबाक को लागू करना कहीं अधिक आसान है। मैंने वैसे भी दोनों को वोट दिया।
टर्ज़िफ़र

15

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

  1. / उपयोगिता / सिस्टम / लाइब्रेरी / CoreServices / Applications / में स्थित पुरालेख उपयोगिता खोलें।
  2. फ़ाइल> प्राथमिकताएं पर जाएं
  3. "आर्काइव फॉर्मेट" वरीयता को "ज़िप आर्काइव" में बदलें
  4. डॉक में फ़ोल्डर्स को उसके आइकन में खींचें और छोड़ें।

इस विकल्प के बारे में अच्छी बात यह है कि आप पुरालेख उपयोगिता को सेट कर सकते हैं। मूल खत्म करने के बाद मूल को स्थानांतरित करने के लिए प्राथमिकताएँ, यह फ़ोल्डर्स तक सीमित नहीं है। यदि आप एक विकल्प के रूप में राइट-क्लिक करना चाहते हैं, तो क्या आर्काइव यूटिलिटी के साथ एक ऑटोमैटर सेवा स्थापित करने का कोई तरीका है? पुरालेख उपयोगिता के रूप में मैं एक सीमा में भाग गया। लॉन्च एप्लिकेशन एक्शन का उपयोग करके नहीं चुना जा सकता है।
thepen

@ निश्चित रूप से, आप लॉन्च एप्लिकेशन एक्शन के रूप में पुरालेख उपयोगिता का चयन कर सकते हैं। आपको बस "अन्य ..." का चयन करने की आवश्यकता है और इसके स्थान पर नेविगेट करें /System/Library/CoreServices/Applications/(आप Cmd-Shift-G दबा सकते हैं जब फ़ाइल का चयन संवाद त्वरित नेविगेशन के लिए इस पथ को पेस्ट करने के लिए खुला हो)
ababak

'आर्काइव प्रारूप' और 'ज़िप आर्काइव' में क्या अंतर है?
user1993

यह विधि बहुत आसान काम प्रवाह है। मैंने कमांड की कोशिश की: आइटम में * के लिए; ज़िप "$ {आइटम}। ज़िप" "$ {आइटम}"; टर्मिनल में किया गया, लेकिन यह सही काम नहीं किया। अज्ञात के रूप में क्यों लेकिन मैं यह पता लगाने के लिए समय नहीं लेना चाहता था। यह ठीक काम किया।
ArchonOSX
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.