मैं एक फ़ोल्डर में उपनिर्देशिका में निहित कई अभिलेखागार कैसे निकालूं, परिणाम को वापस फ़ोल्डर में संग्रहीत कर रहा हूं जहां अभिलेखागार हैं।
मैं एक फ़ोल्डर में उपनिर्देशिका में निहित कई अभिलेखागार कैसे निकालूं, परिणाम को वापस फ़ोल्डर में संग्रहीत कर रहा हूं जहां अभिलेखागार हैं।
जवाबों:
सबसे पहले, 7-ज़िप स्थापित करें ।
batनिर्देशिका की जड़ में एक फ़ाइल बनाएँ जिसमें अभिलेखागार के अंदर कई उपनिर्देशिकाएँ हों। फिर निम्नलिखित को चिपकाएँ:
FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
FOR %%X in (*.rar *.zip) DO (
"C:\Program Files\7-zip\7z.exe" x "%%X"
)
popd
)
बैट लॉन्च करें, और सभी rar / zips को उस फ़ोल्डर में निकाला जाएगा जो वे इसमें निहित हैं।
यह कैसे काम करता है?
के लिए / डी / आर%% एफ में ("*") डीओ (
लूप के लिए वर्तमान निर्देशिका में सभी फ़ोल्डरों के माध्यम से लूप के लिए, और पथ को एक चर में डालें
%%F।
पुशड% CD%
वर्तमान निर्देशिका है कि हम स्मृति में हैं डाल दिया।
सीडी %% एफ
%%Fवर्तमान निर्देशिका के रूप में चर से फ़ोल्डर सेट करें ।
FOR %%X in (*.rar *.zip) DO (वर्तमान फ़ोल्डर में सभी
rarऔरzipफ़ाइलों के लिए, करें:
"C:\Program Files\7-zip\7z.exe" x "%%X"फ़ाइलों पर 7-ज़िप चलाएँ। उद्धरण की आवश्यकता होती है
%%Xक्योंकि कुछ फ़ाइल नामों में रिक्त स्थान होते हैं।
popdपिछली निर्देशिका पर लौटें जिसे हमने पहले मेमोरी में संग्रहीत किया था।
आशा है कि यह किसी के लिए उपयोगी है।
मुझे विंडोज़ विस्टा से स्क्रिप्ट चलाने में समस्या थी। जब मैंने कोड चलाया तो कुछ भी नहीं हुआ। मुझे स्क्रिप्ट चलाने में सक्षम होने के लिए व्यवस्थापक होने की आवश्यकता थी। जब मैंने सही .bat फ़ाइल पर क्लिक किया और "व्यवस्थापक के रूप में चला" तो यह काम नहीं किया क्योंकि यह किसी कारण से सिस्टम 32 फ़ोल्डर में शुरू हुआ (यदि मुझे सही याद है)। इसे हल करने के लिए बस विंडोज पर्यावरण चर का उपयोग करें (यहाँ समझाया गया: विंडोज पर्यावरण चर )% ~ dp0 जिस स्क्रिप्ट से चलाया गया था उस निर्देशिका में वापस जाने के लिए।
@echo on
cd %~dp0
FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
FOR %%X in (*.rar *.zip) DO (
"C:\Program Files\7-zip\7z.exe" x %%X
)
popd
)
सुनिश्चित करें कि कोई * .rar या * .zip फ़ाइलें स्क्रिप्ट के समान स्तर पर हैं। उन्हें एक स्तर नीचे होना चाहिए।
मुझे उम्मीद है कि इस टिप्पणी से किसी को मदद मिली।
find . -name "*.zip" | while read filename; do unzip -o -d "`dirname "$filename"`" "$filename"; done;
वर्तमान निर्देशिका में एक पुनरावर्ती खोज शुरू करता है, .zip में समाप्त होने वाली सभी फ़ाइलों को पाता है, फिर एक लूप में पाइप करता है। इसे खोजने वाली हर फ़ाइल के लिए, यह फ़ाइल पर एक अनज़िप कमांड चलाता है जिसमें आउटपुट को फ़ाइल की डायरेक्टरी में शंट किया जाता है।
काम के ऊपर उत्तर, हालांकि, यदि आप चल रहे हैं Windows 64-bitऔर 7-Zip 32-bit, सही रास्ता C:\Program Files (x86)\7-Zip7-ज़िप के लिए है। नीचे स्क्रिप्ट है जो मेरे लिए काम करती है।
@echo on
cd %~dp0
FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F
FOR %%X in (*.rar *.zip) DO (
"C:\Program Files (x86)\7-zip\7z.exe" x %%X
)
popd
)