मैं 7-ज़िप कमांड लाइन का उपयोग करके उपनिर्देशिकाओं के साथ कैसे संग्रहित करूं? या, मैं संग्रह करते समय फ़ोल्डर संरचना को कैसे करूं?


16

मेरे पास इस तरह की फाइलों का एक गुच्छा है:

C:\G\G1\35antique-shop.mp3
C:\G\G2\35antique-shop.mp3
C:\G\G1\09saguri.mp3
C:\G\G2\09saguri.mp3

मैं सिर्फ पता है कि कैसे करना चाहते हैं रखने , जबकि संग्रह फ़ोल्डर संरचना। डुप्लिकेट चीज़ की तुलना में यह अधिक महत्वपूर्ण है, यह जानने के लिए कि कैसे हल करना है, एक बोनस होगा।

@ Lamb "क्या आप G1 और G2 फ़ोल्डर से केवल चयनात्मक फ़ाइलों (संपूर्ण फ़ोल्डर सामग्री नहीं) को संग्रहित करना चाहते हैं?"

यह लगभग यह सब कहता है, लेकिन मैं सुधार करने की कोशिश करूंगा: न केवल मैं केवल कुछ चयनित फ़ाइलों को एक संग्रह में स्थानांतरित करना चाहता हूं । मेरे पास इन फ़ाइलों की एक सूची भी है , जिसमें प्रत्येक फ़ाइल के लिए पथ-नाम भी शामिल हैं।

इसलिए, SubDir1 में 10 फाइलें हो सकती हैं, जिनमें से मैं तीन ज़िप करना चाहता हूं, और SubDir1 \ sub2 में पांच फाइलें हो सकती हैं, जिनमें से मैं सभी पांचों को ज़िप करना चाहता हूं। फ़ाइलें जिन्हें मुझे संग्रह करने की आवश्यकता है, एक सूची में हैं।

डुप्लिकेट फ़ाइलें हो सकती हैं, इसलिए मेरी आशा है कि उपनिर्देशिका के साथ, 7-ज़िप डुप्लिकेट के रूप में उन्हें नहीं देखता है।

और मैं इसे कमांड लाइन पर करना पसंद करता हूं।

मैंने इस तरह एक बैच फ़ाइल की कोशिश की है:

7z a -r MyArchive.7z C:\G\G1\35antique-shop.mp3
7z a -r MyArchive.7z C:\G\G2\35antique-shop.mp3
7z a -r MyArchive.7z C:\G\G1\09saguri.mp3
7z a -r MyArchive.7z C:\G\G2\09saguri.mp3

इसका अर्थ यह भी है कि फ़ाइलें 01antique-shop.mp3, 02antique-shop.mp3, ...., til 33antique-shop.mp3 और 34antique-shop.mp3। को संग्रहीत नहीं किया जाना चाहिए।

फ़ोल्डरनाम (= उपनिर्देशिका) MyArchive.7z में नहीं जोड़े गए थे, और यह समस्या है।

जाहिर है, मैं एक लिस्टफाइल के साथ सिर्फ एक कमांडो का उपयोग करना चाहता हूं, लेकिन वह भी काम नहीं करता है।

मैंने कोशिश की:

7z a -mx0 -tzip C:\$$-edrive\F-G-H.zip @fgh.txt

जो वास्तव में चयन के रूप में जहाँ तक ठीक काम करता है, लेकिन यह निर्देशिका संरचना नहीं रखता है। अफसोस की बात है।

मैं यह कैसे करु?


क्या आप G1 और G2 फ़ोल्डरों से केवल चयनात्मक फ़ाइलों (संपूर्ण फ़ोल्डर सामग्री नहीं) को संग्रहित करना चाहते हैं?
अंकित

जवाबों:


12

7-ज़िप (15.14) के नवीनतम स्थिर संस्करण में स्विच -spf है जो पूर्ण पथ भंडारण को सक्षम करता है।

उदाहरण के लिए, यदि फ़ाइल list.txt है

C:\tmp\dir1\file.txt
C:\tmp\dir2\file.txt

कमांड 7z a p.7z -spf @list.txtएक संग्रह का निर्माण करेगी जो सूची में मौजूद पूर्ण पथों को संग्रहीत करता है। वैकल्पिक रूप से, कमांड 7z a p.7z -spf2 @list.txtड्राइव अक्षर को हटा देगा:

tmp\dir1\file.txt
tmp\dir2\file.txt

यदि फ़ाइल list.txt है

dir1\file.txt
dir2\file.txt

कमांड 7z a p.7z @list.txtदोनों संस्करणों में, 9.20 और 15.14 दोनों के रूप में रिश्तेदार पथों को संग्रहीत करेगा।

मैंने स्विच -spf के साथ और परीक्षण किए। परिणाम यहाँ हैं


मैं इस विचार को एक दिन के लिए खोज रहा था। धन्यवाद !
मोशे एल

9

मुझे निम्नलिखित का उपयोग करके उपनिर्देशिकाओं के साथ एक निर्देशिका को संग्रहीत करने के लिए मिला :

7z.exe a - t7z NewArchivePath PathOfFolderToArchive

मुझे 7zA.exe का सीधा लिंक कहीं भी नहीं मिल सकता है (आपके लिंक के अनुसार), क्या यह अप्रचलित है और 7z.exe द्वारा प्रतिस्थापित किया गया है?
प्रिंसेसपोलेरुलज़


और, मैं इसका उपयोग करना चाहूंगा, लेकिन मुझे उस पृष्ठ पर 7-zip.org/download.html पर एक जैसा नहीं मिल सकता है। तो, बस स्पष्ट होने के लिए: "7zA.exe के लिए एक सीधा लिंक कहीं भी नहीं मिल सकता है" मेरा वास्तव में मतलब था: "कृपया मुझे इस मुफ्त सॉफ्टवेयर का सीधा लिंक दें!" धन्यवाद!
प्रिंसेसपोलेरुलज़

1
@ user194767: ठीक है, यहाँ वर्तमान संस्करण है, लेकिन क्या आप मुझे बता रहे हैं कि आप उस पृष्ठ पर कहीं भी 7-जिप कमांड लाइन संस्करण नहीं देख सकते हैं ?!
करण

मैं 7zA.exe का उपयोग नहीं कर सका इसलिए 7z.exe का उपयोग करने की कोशिश की और यह काम किया। मुझे यकीन नहीं है कि -r ध्वज का उपयोग किस लिए किया जाता है, लेकिन उपनिर्देशिकाओं को संग्रहीत करने के लिए इसकी आवश्यकता नहीं है।
एरिक रोपर

7

इसके बजाय यह प्रयास करें:

cd /d C:\
7z a MyArchive.7z G\G1\35antique-shop.mp3
7z a MyArchive.7z G\G2\35antique-shop.mp3
7z a MyArchive.7z G\G1\09saguri.mp3
7z a MyArchive.7z G\G2\09saguri.mp3

समस्या यह प्रतीत होती है कि लोग उचित पथ भंडारण विकल्पों के लिए वर्षों से अनुरोध कर रहे हैं (जैसा कि उनके पास बहु-मात्रा अभिलेखागार को संशोधित करने की क्षमता के लिए है ), लेकिन लेखक दिलचस्पी नहीं लेता है। यही कारण है कि मैंने WinRAR का उपयोग करना शुरू कर दिया है।


यदि आपके पास एक सूची है, तो 7-ज़िप पथ संग्रहीत नहीं करेगा यदि संग्रहीत की जाने वाली फाइलें एक शीर्ष-स्तरीय निर्देशिका को साझा नहीं करती हैं। उदाहरण के लिए यदि आपके पास इनपुट है । निम्नलिखित युक्त:

C:\path to\file1.ext
D:\path to\file1.ext
E:\path to\file1.ext

यदि आप दौड़ते हैं 7z a MyArchive.7z @Input.txt, तो आप देखेंगे कि रास्ते पूरी तरह से छीन लिए गए हैं, जो मुझे पूरी तरह से पीछे की ओर लगता है (OTOH rar a MyArchive.rar @Input.txtठीक काम करता है)।

तो 7-जिप की कमी को दूर करने के लिए, आप निम्नानुसार एक बैच फ़ाइल का उपयोग कर सकते हैं:

for /f "tokens=1* delims=\" %%i in (Input.txt) do (
    pushd %%i\
    7z a D:\MyArchive.7z "%%j"
    popd
)

नोट:D:\MyArchive.7z अपने गंतव्य संग्रह के लिए उचित पथ से बदलें । इसके अलावा, बैच फ़ाइल को इस बात पर ध्यान दिए बिना काम करना चाहिए कि आपने अपनी सूची में पथ उद्धृत किया है या नहीं।


संपादित करें: यदि आपका सूची-पत्र ऐसा दिखता है:

"C:\$$-edrive\F\faithless.-.long.way.mp3"
"C:\$$-edrive\G\Antique Shop.mp3"

या

"\$$-edrive\F\faithless.-.long.way.mp3"
"\$$-edrive\G\Antique Shop.mp3"

फिर इसे इस तरह से देखने के लिए संपादित करें:

"$$-edrive\F\faithless.-.long.way.mp3"
"$$-edrive\G\Antique Shop.mp3"

अब यह माना जा रहा है कि सभी फाइलें संग्रहीत की जा रही हैं C:\$$-edrive, C: \ पर जाएं और चलाएं 7z a C:\MyArchive.7z @C:\Input.txt। एक सूची का उपयोग करके पथ केवल तभी सहेजे जाएंगे जब कोई ड्राइव अक्षर मौजूद नहीं है, कोई प्रारंभिक बैकस्लैश नहीं हैं और यदि शीर्ष-स्तरीय (रूट) निर्देशिका सभी फ़ाइलों के लिए समान है। इसके अलावा, सर्वोत्तम परिणामों के लिए, मैं आपको C: \ $$ - edrive में MyArchive.7z नहीं बनाने की सलाह देता हूं।


खैर, जवाब 3/4 ठीक था। RAR ने सुपर काम किया, लेकिन बैच फ़ाइल ने soso काम किया। यहाँ आउटपुट है, और इसने केवल एक फ़ाइल को मेरे संग्रह में जोड़ा है, एक बिना फ़ाइल नाम के रिक्त स्थान___ C: \ Programs \ zippers \ 7-Zip> (pushd "C: \ c: \ Programs \ zippers \ 7-ZIP / 7z) .exe ac: \ $$ - edrive \ FGH.7z "$$ - edrive \ G \ gattaca_7mp 3_zefen \ gattaca - 03 एक पल। एमपी 3" पॉप "7-ज़िप 4. कॉपीराइट (c) 1999-2009 इगोर पावलोव 2009 स्कैनिंग अपडेट आर्काइव c: \ $$ - edrive \ FGH.7z त्रुटि: फ़ाइल FGH.7z.tmp एक्सेस को अस्वीकार नहीं कर सकता। सिस्टम त्रुटि: अपरिभाषित त्रुटि ===== सबसे महत्वपूर्ण है कि शायद पहुंच अस्वीकृत त्रुटि है?
प्रिंसेसपोलेरुलज़

क्या आप ऊपर दिए गए अपने प्रश्न के लिए अपनी वास्तविक सूची से कुछ नमूना लाइनें (रिक्त स्थान और बिना) जोड़ सकते हैं ?
करण

ठीक है, इसलिए मैंने फ़ाइलनाम में डॉट्स के साथ सभी स्थानों को बदल दिया, लेकिन उन मार्गों में नहीं, जिन्हें मैं अब कोशिश करूंगा। आउटपुट अभी भी है: C: \ Programs \ zippers \ 7-Zip> (______ pushd c: _______ c: \ Programs \ zippers \ 7-Zip \ 7z.exe ac: \ $$ - edrive \ FGH.72z - $$ - edrive \ F \ filmmusic_14mp3_foretean \ Starcraft .-। Starcraft.vs.south.park.mp3 "_______ popd________) ________ स्कैनिंग अपडेट आर्काइव c: \ $$ - edrive / FGH.7z त्रुटि: फ़ाइल FGH.7z.tmp एक्सेस नहीं खोल सकता। से इनकार किया। सिस्टम त्रुटि: अपरिभाषित त्रुटि
प्रिंसेसपोलेरुलज़

"मैंने फ़ाइलनामों में डॉट्स के साथ सभी रिक्त स्थान बदल दिए हैं" - मतलब आपने वास्तविक फ़ाइलों का नाम बदल दिया, या बस सूची को संपादित किया? फ़ाइल नाम और पथ दोनों में रिक्तियाँ ठीक होनी चाहिए, ऊपर मेरा संपादन देखें (यानी आपकी सूची से हटाएं C: \ और सभी रास्तों पर उद्धरण रखें)। अब आपको मेरे बैच फ़ाइल वर्कअराउंड के बजाय सीधे 7z का उपयोग करने में सक्षम होना चाहिए।
करण

1. मैंने दोनों का नाम = = = = = = 2. मैंने आपके परिवर्तन किए हैं, लेकिन यह अभी भी 7z = = = = = 3 के साथ काम नहीं करता है। $ $ - edrive वास्तव में केवल शीर्ष निर्देशिका है। = = = = = 4. त्रुटि संदेश = = = = = फ़ाइलों के लिए चेतावनी: = = = = = $ $ - edrive: सिस्टम उस फ़ाइल को नहीं ढूँढ सकता। = = = = = = = = = = = "$ $ - edrive: सिस्टम उस फ़ाइल को नहीं ढूँढ सकता है। = = = = = = = = = = = चेतावनी: 2 फ़ाइलें नहीं ढूँढ सकता है = = = = = C: \ Programs \ zippers \ 7-ज़िप> = = = = = ध्यान दें कि दो चेतावनियाँ हैं, और दूसरा एक दोहरे उद्धरण के साथ शुरू होता है ... अजीब?
प्रिंसेसपोलेरुलज़

0

7-जिप उन्हें बिना परवाह किए डुप्लिकेट के रूप में देखेगा, और उन्हें छोड़ देगा। अगर वहाँ कोई रास्ता है कि चारों ओर पाने के लिए, मैं इसे कभी नहीं मिला है - मैं हमेशा बस कई अभिलेखागार में काम को तोड़ने।


क्या आप जानते हैं कि फ़ाइलों को संग्रहीत करते समय फ़ोल्डर संरचना को KEEP कैसे करें? वे कहते हैं कि यह डिफ़ॉल्ट है, लेकिन यह नहीं है।
प्रिंसेसपोलेरुलज़

@ user194767 - मैं इस तरह एक कमांड लाइन का उपयोग करता हूं: %ZDIR%\7z a -t7z -r -mx=1 %ZIP%\mydocu "c:\My Documents\*.*" -wc:\tempजहां ZDIR7-ज़िप के लिए रास्ता ZIPहै और गंतव्य ड्राइव है।
MT_Head

0

डुप्लिकेट के साथ मदद करने के लिए सुनिश्चित नहीं है। हालाँकि, मुझे लगता है कि एक पूरी कमांड के साथ एक बैच की तुलना में अधिक सुविधाजनक प्रणाली एक listfile.txt बनाने के लिए होगी:

 C:\G\G1\35antique-shop.mp3
 C:\G\G2\35antique-shop.mp3
 MyArchive.7z C:\G\G1\09saguri.mp3
 MyArchive.7z C:\G\G2\09saguri.mp3

और फिर उन सभी के साथ संपीड़ित करें 7z a -r -tzip archive.zip @listfile.txt


0

मैंने Totalcmd "tot-zip.bat" के साथ उपयोग करने के लिए एक बैट स्क्रिप्ट बनाई है:

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

set "TOP_DIR="D:\Grabovsky""
set "archname="%TOP_DIR%\arch.zip""
set "filelist= "
cd %TOP_DIR%
for %%A in (%*) do (
    set ondisk_path="%%~dpnxA"
    set inarch_path=!ondisk_path:%TOP_DIR%\=!
    echo Putting !ondisk_path! to !inarch_path!.
    set "filelist=!filelist! !inarch_path!"
)
echo filelist: %filelist%

7z.exe a -tzip %archname% %filelist% > NUL
pause

फिर Totalcmd में इसके लिए एक शॉर्टकट बनाएं: यहाँ छवि विवरण दर्ज करें

फिर जब आप कुछ फ़ाइलों / फ़ोल्डरों को ज़िप करना चाहते हैं और %TOP_DIR%आपके सापेक्ष फ़ोल्डर संरचना को संरक्षित करते हैं, तो केवल आवश्यक फ़ाइलों (कहीं अंदर %TOP_DIR%) का चयन करें और बटन दबाएं।

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