Dizin adı arşive eklenmeden dizinden arşiv oluşturma


83

Aşağıdaki klasör yapısına sahibim:

  • kök, köken
    • klasor1
    • klasor2
    • folder3
    • 7za.exe

Tüm dosyaları sıkıştırılmış folder1bir zip dosyasına sıkıştırmak için 7-zip komut satırı aracını çalıştırmak istiyorum folder1.zip.

Aşağıdakileri çalıştırma

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

beklendiği gibi bir zip dosyası üretir. Ancak, zip dosyasını açtığımda, içinde bir klasör folder1var ve içinde o klasörün içindeki tüm dosyalar var. Klasör adının zip klasörüne eklenmesini istemiyorum, yani tüm dosyaları "Düz" bir dosya biçiminde eklemek istiyorum.

Ayrıca her bir dosya / klasör için tekrar tekrar komut satırı aracını çalıştırmak istemiyorum.

Bu işlevselliği sağlayan bir anahtar var mı?


cdKlasör1'e girebilir misin 7za.exe a -tzip ..\folder1.zip *.*?
zpletan

Yanıtlar:


136

Gönderen 7-Zip Yardım dosyası:

a (Ekle) komutu

Arşive dosya ekler.

Örnekler

7z a archive1.zip subdir\

tüm dosyaları ve alt klasörleri subdir klasöründen archive1.zip arşivine ekler. Arşivdeki dosya isimleri subdir \ prefix içerecektir.

7z a archive2.zip .\subdir\*

tüm dosyaları ve alt klasörleri, subdir klasöründeki arşivden archive2.zip dosyasına ekler. Arşivdeki dosya isimleri subdir \ prefix içermez.

cd /D c:\dir1\

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

C: \ archive3.zip arşivindeki dosya isimleri dir2 \ dir3 \ prefix içerecektir, fakat c: \ dir1 \ prefix içermezler.

Demek istediğin komut şöyle olurdu: 7za.exe a folder1.zip .\folder1\*

Ayrıca, 7-Zip'in joker karakterlerini kullanmasına dikkat et. *.*"Tüm dosyalar" gibi davranmaz - "Dosya adında bir nokta olan tüm dosyalar" anlamına gelir. Eklenti içermeyen dosyalar kaçırılacaktır. Tüm dosyaları gerçekten istiyorsanız, sadece kullanın *.

Son olarak, -tziparşiv dosya adı sona ererse parametreye gerek kalmaz .zip. 7-Zip, bu durumlarda hangi formatı istediğinizi bulmak için yeterince akıllı. Sadece özel bir uzantı istediğinizde gereklidir (örneğin 7za.exe a -tzip foo.xpi <files>, Mozilla Eklentisi için).


2

Bu benim için çalıştı

C: \ Parent \ SubFolders gibi klasör yapısını göz önünde bulundurun ..... Ve tüm dosyaları ve klasörleri içerecek parent.zip oluşturmak istiyorsunuz. C: \ Üst klasör olmadan ebeveyn [[Alt klasörlerden başlayacak .....]

cd /D "C:\Parent"

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

Bu, C: \ Parent öğesinde Parent.zip oluşturur


2
Bu, başka bir yanıtı çoğaltır ve yeni bir içerik eklemez. Gerçekten katkıda bulunacak yeni bir şeyiniz yoksa lütfen cevap yazmayın.
DavidPostill

Çözüm ararken, bu çözümü tam olarak anlamadım. Açıkçası çevrimiçi bulduğum bazı cevapları kopyalayıp yapıştırmayacağım. Bunun için biraz zaman harcadım, böylece paylaşmam gerektiğini hissettim. Bana göre bu kesin cevabı burada ve tarafımdan gönderilen Yığın Taşması üzerinde bulabilirsiniz.
Pritesh Dhokchaule

7-Zip'in *.*"tüm dosyalar" anlamına gelmediğini, bunun yerine "dosya adının bir parçası olarak bir dönemi olan tüm dosyalar" anlamına gelmediğini unutmayın . Bu yüzden bu cevap aslında uzantısı olmayan dosyaları atlayacaktır (bu cevap kabul edilen cevapta belirtilmiştir).
Bill_Stewart

1

Sadece kabul edilen yanıtı genişletmek için (orada yorum ekleyemedim):

Linux'ta '*' eklenmesi benim için işe yaramadı, bu yüzden istenen sonucu veren daha ayrıntılı komut satırını hazırladım:

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

===========

senaryo açıklaması:

  • daha sonra kullanmak için geçerli dir yolunu kaydedin;
  • arşivlenmesi gereken dizine gidin;
  • arşiv oluşturun (sonunda 'dikkat' (nokta));
  • ilk direkte dön;
  • orijinal dir yolunu saklanan değişkenden kurtulun

Umarım biri için faydalı olabilir.


Ben *tırnak içine yerleştirmenizi öneririm (aksi takdirde kabuk buradaki dosyalara genişletir).
Simon Sobisch

-1

Buna ne dersin. örn. Klasör / alt Klasör1, Klasör / alt klasör2

tüm alt klasörleri seç> sağ tıklayıp ardından arşiv oluştur> herhangi bir format seç

* Arşiv adı ana klasör olur ..

Basit değil mi?


3
Soru 7-zip için CLI ile ilgilidir, GUI'nin nasıl kullanılacağı ile ilgili değildir. Bir şeyleri otomatikleştirmek istediğinizde GUI'nin nasıl kullanılacağını öğrenmek anlamsızdır.
binki
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.