मैं दूसरे फ़ोल्डर के भीतर प्रत्येक फ़ोल्डर के लिए एक .zip फ़ाइल कैसे बना सकता हूं?


18

फ़ोल्डर के अंतर्गत images\, मेरे पास निम्न फ़ोल्डर हैं:

  • Usa\
  • Italy\
  • Japan\

आदि..

मैं एक स्क्रिप्ट है कि एक बनाता चाहते हैं .zipइन फ़ोल्डरों से प्रत्येक के लिए है, तो मेरे पास है usa.zip, italy.zip, japan.zip

मैं उसे कैसे कर सकता हूँ?

जवाबों:


10

मुझे लगता है कि यह विंडोज है, जैसा कि आप बैकस्लैश का उपयोग कर रहे हैं।

जाओ 7za.exe (के कमांड लाइन संस्करण 7-ज़िप ) और अपने में रख %PATH%

फिर इसे अपनी Images\निर्देशिका के भीतर चलाएं :

for /f "tokens=* usebackq" %G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%~G.zip" "%~G"

या एक बैच स्क्रिप्ट में:

for /f "tokens=* usebackq" %%G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%%~G.zip" "%%~G"

यह काम नहीं करता है यदि फ़ोल्डर में उनके नाम के स्थान हैं।
जिगगंजर

@jiggunjer हां, आप सही कह रहे हैं। मैंने इसे फ़ोल्डर नामों में रिक्त स्थान के साथ काम करने के लिए तय किया है।
पैराडायरायड

1
यह सामान्य 7zip निष्पादन योग्य के साथ भी काम करता है। मैंने 7za को "C: \ Program Files \ 7-Zip \ 7z.exe" में अपडेट किया और यह बिना किसी समस्या के काम किया।
user1324161

8

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

  #!/bin/bash

  IFS=$'\n'

  for f in $(find "$1" -mindepth 1 -maxdepth 1 -type d ); do
    zip -r "$f" "$f"
  done

यह स्क्रिप्ट फ़ोल्डर के रूप में पहला तर्क इस मामले की छवियों में ले जाएगी, और अपने सभी फ़ोल्डरों (यूएसए, इटली और जापान) को प्राप्त करने के लिए एक स्तर तक गहरी पुनरावृत्ति करेगी और उन्हें उसी स्थान पर ज़िपित करेगी।

यह पुरानी जिप फाइल या सोर्स फोल्डर को डिलीट नहीं करेगा। जिप मौजूदा जिप फाइलों का पता लगाने और फिर से चलने पर उन्हें अपडेट करने के लिए काफी स्मार्ट है। हालाँकि, यदि आप स्रोत फ़ोल्डर में कोई फ़ाइल हटाते हैं, तो इसे ज़िप फ़ाइलों में हटाया नहीं जाएगा। आप पहले से मौजूद फ़ाइलों को हटाकर इस व्यवहार को दरकिनार कर सकते हैं।


मैंने लिनक्स स्क्रिप्ट का उपयोग किया था जो कि स्पोनीरो ने पोस्ट किया था, और फ़ोल्डरों को हटाने के लिए शुरुआत में एक पंक्ति जोड़ी थी: $ 1 -type d खोजें। xargs rm
-rf

7

इसके लिए आप Winrar का उपयोग कर सकते हैं ।

अपने सभी फ़ोल्डरों का चयन करें, राइट क्लिक करें और चुनें Add to archive। अब Put each file to separate archiveटैब के नीचे विकल्प चुनें Files:

यहाँ छवि विवरण दर्ज करें

ओके पर क्लिक करें और आपका काम हो गया। आप ज़िप चाहते .rar के बजाय फाइलों, बस का चयन ZIPमें Generalटैब के तहत Archive format


0

एमवीजी के इस जवाब ने उबंटू में मेरे लिए काम किया:

आप इस लूप का उपयोग कर सकते हैं bash:

for i in */; do zip -r "${i%/}.zip" "$i"; done

iलूप वेरिएबल का नाम है। */वर्तमान निर्देशिका के प्रत्येक उपनिर्देशिका का अर्थ है, और उन नामों में एक अनुगामी स्लैश शामिल होगा। cdइसे निष्पादित करने से पहले सही जगह पर सुनिश्चित करें। "$i"बस उस निर्देशिका का नाम, जिसमें अनुगामी स्लेश शामिल है। उद्धरण चिह्नों से यह सुनिश्चित होता है कि निर्देशिका नाम में व्हॉट्सएप परेशानी का कारण नहीं बनेगा। ${i%/}की तरह है, $iलेकिन हटाए गए स्लैश के साथ, ताकि आप ज़िप फ़ाइल के नाम का निर्माण कर सकें।

यदि आप यह देखना चाहते हैं कि यह कैसे काम करता है, तो echoइससे पहले शामिल करें zip और आप निष्पादित के बजाय मुद्रित कमांड देखेंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.