سؤال إنشاء أرشيف من دليل بدون إضافة اسم الدليل إلى الأرشيف


لدي بنية المجلد التالية:

  • جذر      
    • FOLDER1
    • folder2
    • folder3
    • 7za.exe

أرغب في تشغيل أداة سطر الأوامر 7-zip لضغط جميع الملفات في folder1 إلى ملف مضغوط يسمى folder1.zip.

تشغيل ما يلي

7za.exe a -tzip folder1.zip folder1\\*.*

ينتج ملف مضغوط كما هو متوقع. ومع ذلك ، عند فتح ملف zip ، فإنه يحتوي على مجلد فيه folder1وداخل ذلك لدي جميع الملفات التي كانت داخل هذا المجلد. لا أريد إضافة اسم المجلد إلى مجلد zip ، على سبيل المثال ، أود إضافة جميع الملفات بتنسيق ملف "مسطح".

لا أريد أيضًا تشغيل أداة سطر الأوامر بشكل متكرر لكل ملف / مجلد فردي.

هل هناك تبديل يوفر هذه الوظيفة؟


70
2017-09-26 16:51


الأصل


هل تستطيع cd في folder1 و 7za.exe a -tzip ..\folder1.zip *.*؟ - zpletan


الأجوبة:


من 7-الرمز البريدي المساعدة ملف:

أمر (إضافة)

يضيف الملفات إلى الأرشيف.

أمثلة

7z a archive1.zip subdir\

يضيف كل الملفات والمجلدات الفرعية من المجلد الفرعي إلى أرشيف archive1.zip. سوف تحتوي أسماء الملفات في الأرشيف على \ subdir \ prefix.

7z a archive2.zip .\subdir\*

يضيف جميع الملفات والمجلدات الفرعية من المجلد الفرعي إلى أرشيف archive2.zip. لن تحتوي أسماء الملفات في الأرشيف على البادئة \ subdir \.

cd /D c:\dir1\

7z a c:\archive3.zip dir2\dir3\

ستحتوي أسماء الملفات في الأرشيف c: \ archive3.zip dir2 \ dir3 \ prefix ، ولكنها لن تحتوي على c: \ dir1 \ prefix.

إذن ، الأمر الذي تريده سيكون: 7za.exe a folder1.zip .\folder1\*

أيضًا ، انتبه إلى معالجة 7-Zip لأحرف البدل. لا يعامل *.* مثل "جميع الملفات" - فهذا يعني "جميع الملفات ذات الفترة في اسم الملف." سيتم فقد ملفات الإضافة-أقل. إذا كنت تريد حقا جميع الملفات ، استخدم فقط * في حين أن.

وأخيرا، فإن -tzip المعلمة غير مطلوبة إذا كان اسم ملف الأرشيف ينتهي بـ .zip. 7-Zip ذكية بما فيه الكفاية لمعرفة الشكل الذي تريده في تلك الحالات. مطلوب فقط عندما تريد إضافة مخصصة (على سبيل المثال ، 7za.exe a -tzip foo.xpi <files> لإضافة موزيلا).


114
2017-09-26 17:25





هذا العمل بالنسبة لي

النظر في بنية المجلد مثل C: \ Parent \ SubFolders ..... وتريد إنشاء parent.zip التي سوف تحتوي على كافة الملفات والمجلدات C: \ Parent بدون المجلد الأصل [أي أنها ستبدأ من SubFolders .....]

cd /D "C:\Parent"

"7z.exe" a Parent.zip "*.*" -r

سيؤدي ذلك إلى إنشاء Parent.zip في C: \ Parent


1
2018-06-07 18:04



هذا تكرار إجابة أخرى ويضيف أي محتوى جديد. من فضلك لا نشر إجابة ما لم يكن لديك بالفعل شيء جديد للمساهمة. - DavidPostill♦
حسنًا أثناء البحث عن حل لم أحصل على هذا الحل بدقة. من الواضح أنني لن نسخ فقط لصق بعض الإجابات وجدت على الإنترنت. أقضي بعض الوقت لذلك شعرت أنني يجب أن أشاركه. بالنسبة لي ، يمكنك العثور على هذه الإجابة الصحيحة هنا وعلى Stack Overflow التي نشرتها. - Pritesh Dhokchaule


فقط للتوسع في الإجابة المقبولة (لم أتمكن من إضافة تعليق هناك):

على نظام التشغيل Linux لم يعمل "*" معًا ، لذلك انتهى الأمر إلى إنشاء سطر أوامر أكثر مطولًا أعطى النتيجة المرجوة:

curr_dir=$(pwd); \ 
cd source_code/lambda/ ; \
7z a ../../lambda.zip .; \
cd $curr_dir \
unset curr_dir

===========

شرح البرنامج النصي:

  • حفظ مسار dir الحالي لاستخدامه لاحقًا ؛
  • انتقل إلى الدليل الذي يلزم أرشفته ؛
  • إنشاء أرشيف (إشعار "." (نقطة) في النهاية) ؛
  • عودي إلى دير الأصلي ؛
  • تخلص من المتغير الذي خزن مسار الدر الأصلي

آمل أن تكون مفيدة لشخص ما.


0
2017-07-17 10:49





وماذا عن هذا. مثلا مجلد / subFolder1 ، مجلد / مجلد فرعي

اختر كل مجلد فرعي> rightclick ثم أنشئ أرشيف> حدد أي تنسيق

* سيكون اسم الأرشيف هو المجلد الرئيسي ..

حق بسيط؟


-1
2018-03-17 05:23



السؤال هو حول CLI لـ 7-zip ، وليس كيفية استخدام واجهة المستخدم الرسومية. تعلم كيفية استخدام واجهة المستخدم الرسومية لا طائل من ورائه عندما تريد أتمتة الأشياء. - binki