संग्रह के नाम के अनुसार निकाले गए फ़ाइल को स्वचालित रूप से निकालें और नाम बदलें


3

मैं एक फ़ोल्डर में ज़िप फ़ाइलों का एक गुच्छा है। प्रत्येक ज़िप फ़ाइल में एक फ़ाइल होती है जिसका नाम है exp_1.txt। मैं प्रत्येक ज़िप फ़ाइल को अनज़िप करना चाहूंगा और प्रत्येक ज़िप फ़ाइल से निकाली गई फ़ाइल का नाम बदलकर उस ज़िप फ़ाइल का नाम बदल दूंगा।

ज़िप फ़ाइल नाम किसी भी पैटर्न या दिनांक संरचना का पालन नहीं करते हैं, लेकिन सभी अलग हैं। मुझे पता चला है कि कैसे प्राप्त करने के लिए exp_1.txt ज़िप फ़ाइल के रूप में एक ही निर्देशिका में निकाली गई फ़ाइल, लेकिन नाम बदलने का पता नहीं लगा सकते exp_1.txt मिलान करने के लिए जिस ज़िप फ़ाइल से इसे निकाला गया था उसका नाम है।

एक बार फिर कम शब्दों में: से TuesdayReport.zip मैं एकमात्र फ़ाइल निकालना चाहता हूं exp_1.txt और इसका नाम बदल दें TuesdayReport.txt उसी निर्देशिका में TuesdayReport.zip

वर्तमान में मैं उपयोग कर रहा हूं 7z x फ़ाइल को उसी निर्देशिका में निकालने के लिए जिसमें ज़िप फ़ाइल स्थित है। मैं इसे बैच फ़ाइल से चलाने में सक्षम होना पसंद करूंगा।


किस ऑपरेटिंग सिस्टम पर?
Daniel Andersson

मूल रूप से बाहर जाने के लिए विंडोज 7 64 बिट खेद है।
Carrie

मैं एक फ़ोल्डर को उसी नाम का नाम दे सकता हूं और फ़ाइल को उस फ़ोल्डर में डाल सकता हूं, लेकिन यह वास्तव में मेरी मदद नहीं करता है क्योंकि फ़ाइल को अभी भी exp_1.txt नाम दिया गया है और उसने इसके लिए एक निर्देशिका बनाई है, कोई अन्य विकल्प?
Carrie

जवाबों:


0

7zip कमांड लाइन संस्करण का उपयोग क्यों नहीं किया जाता है, जिसे आप डाउनलोड कर सकते हैं यहाँ ?

इस ज़िप फ़ाइल के अंदर आप CHM प्रारूप में एक मदद फ़ाइल पा सकते हैं जिसमें सभी स्विच और कमांड होते हैं जो आपकी बैच प्रक्रिया के दौरान आपकी सहायता कर सकते हैं।


मैं एक फ़ोल्डर को उसी नाम का नाम दे सकता हूं और फ़ाइल को उस फ़ोल्डर में डाल सकता हूं, लेकिन यह वास्तव में मेरी मदद नहीं करता है क्योंकि फ़ाइल को अभी भी exp_1.txt नाम दिया गया है और उसने इसके लिए एक निर्देशिका बनाई है, कोई अन्य विकल्प?
Carrie

0

यह नाम वाली फाइल को निकालेगा exp_1.txt वर्तमान निर्देशिका में प्रत्येक ज़िप फ़ाइल से ज़िप फ़ाइल के समान नाम के साथ लेकिन साथ txt के बजाय zip विस्तार:

for %a in (*.zip) do @(7z l "%~a" -ir!exp_1.txt |findstr exp_1.txt) && 7z e "%~a" -ir!exp_1.txt -so >"%~na.txt"

इसे सीधे कमांड लाइन से चलाया जाना है, यदि आप इसे बैच से चलाना चाहते हैं तो आपको दोगुना करना होगा %

यह क्या करता है:

  • for लूप हर ज़िप फ़ाइल को एन्यूमरेट करता है
  • प्रथम 7z एक साथ आह्वान findstr सुनिश्चित करें कि अर्क चल रहा है / एक फ़ाइल केवल तभी उत्पन्न होती है जब संग्रह में विशेष फ़ाइल होती है
  • दूसरा 7z मंगलाचरण वास्तव में मानक उत्पादन में फ़ाइल को निकालता है ( -so स्विच) और संग्रह को माइनस एक्सटेंशन (माइनस एक्सटेंशन) के नाम से फाइल करने के लिए stdout को रीडायरेक्ट करता है। %~n संशोधक cmd को केवल आधार नाम (बिना विस्तार के) लेने का निर्देश देता है

कृपया ध्यान दें कि यदि एक ही नाम (विभिन्न निर्देशिकाओं में) के साथ संग्रह में एक से अधिक फ़ाइल हैं तो यह अप्रत्याशित परिणाम उत्पन्न कर सकती हैं।

यदि आप इसे बैच में रखते हैं तो मैं फ़ाइल नाम को चर के रूप में निर्धारित करने का भी सुझाव दूंगा ( पाश से पहले ) पुनरावृत्ति संबंधी त्रुटियों से बचने के लिए (आपको इसे ऊपर कमांड में 3 बार दर्ज करने की आवश्यकता है)।


-1
forfiles /M *.zip /C "cmd /c C:\PROGRA~1\7-Zip\7z.exe e @file & ren exp_1.txt @fname.txt"

3
सुपर उपयोगकर्ता में आपका स्वागत है! हालांकि यह सवाल का जवाब दे सकता है, अगर आप समझा सकते हैं तो यह एक बेहतर जवाब होगा क्यूं कर ऐसा करता है। हम व्यापक, उच्च गुणवत्ता वाले उत्तर की तलाश कर रहे हैं जो कुछ स्पष्टीकरण और संदर्भ प्रदान करते हैं। केवल एक-पंक्ति का उत्तर न दें; समझाएं कि आपका उत्तर सही क्यों है, आदर्श रूप से उद्धरणों के साथ। ऐसे उत्तर जो स्पष्टीकरण शामिल नहीं हैं, हटाए जा सकते हैं।
G-Man

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