scripting - प्रोग्रामेंटल रूप से एक चरण में tar.gz निकालें(7zip के साथ विंडो पर)




gzip archive (3)

समस्या: मैं एक ही चरण में tar.gz फ़ाइलों को निकालने में सक्षम होना चाहूंगा। यह मेरे प्रश्न को लगभग एक जैसा बना देता है: टार-जीज़ के लिए स्टैक ओवरफ्लो सवाल

मेरा प्रश्न लगभग समान है, लेकिन ऐसा नहीं है, क्योंकि मैं इसे 7zip कमांड लाइन (या ऐसा कुछ) का उपयोग कर एक बॅट फ़ाइल या ruby ​​/ perl / python स्क्रिप्ट के अंदर खिड़कियों पर करना चाहता हूं।

प्रश्न: यह प्रतीत होता है कि सरल कार्य पहले उपस्थिति के मुकाबले अधिक शामिल साबित हो रहा है। क्या किसी की एक स्क्रिप्ट है जो पहले से ही ऐसा करती है?



7z e example.tar.gz  && 7z x example.tar

एक ही चरण में दो आज्ञाओं को संयोजित करने के लिए && का उपयोग करें 7zip पोर्टेबल का उपयोग करें (आपको केवल 7z.exe और 7z.dll की आवश्यकता होगी)


पुराना सवाल है, लेकिन आज मैं इसके साथ संघर्ष कर रहा था इसलिए यहां मेरा 2 सी है 7zip कमांडलाइन उपकरण "7z.exe" (मेरे पास v9.22 स्थापित है) stdout पर लिख सकते हैं और stdin से पढ़ सकते हैं ताकि आप पाइप का उपयोग करके मध्यवर्ती टार फ़ाइल के बिना कर सकते हैं:

7z x "somename.tar.gz" -so | 7z x -aoa -si -ttar -o"somename"

कहा पे:

x     = Extract with full paths command
-so   = write to stdout switch
-si   = read from stdin switch
-aoa  = Overwrite all existing files without prompt.
-ttar = Treat the stdin byte stream as a TAR file
-o    = output directory

कमांड लाइन कमांड और स्विचेस पर अधिक जानकारी के लिए इंस्टॉल डायरेक्टरी में मदद फ़ाइल (7-ज़िप.चेएम) देखें।

जैसा कि @ज़ेस्परी पॉवरहेल द्वारा नोट किया गया है, वह दूसरी 7z प्रक्रिया में इनपुट को बफर करेगा, ताकि आपकी टार फाइल बड़े होने पर बहुत मेमोरी खा सकती है अर्थात:

& 7z x "somename.tar.gz" -so  | & 7z x -aoa -si -ttar -o"somename"

इस से एक वैकल्पिक हल अगर आप powershell से ऐसा करना चाहते हैं तो कमांड को cmd.exe पर पास करना है:

& cmd.exe '/C 7z x "somename.tar.gz" -so | 7z x -aoa -si -ttar -o"somename"'




7zip