Saya memiliki banyak file seperti ini:
C:\G\G1\35antique-shop.mp3
C:\G\G2\35antique-shop.mp3
C:\G\G1\09saguri.mp3
C:\G\G2\09saguri.mp3
Saya hanya ingin tahu cara menjaga struktur folder saat pengarsipan. Ini lebih penting daripada hal duplikat, untuk mengetahui bagaimana menyelesaikannya, akan menjadi bonus.
@Lamb "Apakah Anda ingin mengarsipkan hanya file selektif (bukan seluruh isi folder) dari folder G1 dan G2?"
Itu hampir mengatakan semuanya, tetapi saya akan mencoba untuk meningkatkan: Saya tidak hanya ingin memindahkan hanya beberapa file yang dipilih ke arsip. Saya juga punya daftar file-file ini, termasuk nama path untuk setiap file.
Jadi, di SubDir1 mungkin ada 10 file, yang saya ingin zip tiga, dan di SubDir1 \ sub2 mungkin ada lima file, yang saya ingin zip semua lima. File yang perlu saya arsipkan ada dalam listfile.
Mungkin ada file duplikat, jadi harapan saya adalah bahwa dengan subdirektori ditambahkan, 7-Zip TIDAK melihatnya sebagai duplikat.
Dan saya suka melakukannya di baris perintah.
Saya sudah mencoba file batch seperti ini:
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
Ini juga berarti bahwa file 01antique-shop.mp3, 02antique-shop.mp3, ...., til 33antique-shop.mp3 dan 34antique-shop.mp3, TIDAK boleh diarsipkan.
Folder lipat (= subdirektori) tidak ditambahkan ke MyArchive.7z, dan ini masalahnya.
Jelas, saya ingin menggunakan hanya satu komando dengan listfile, tetapi itu tidak berhasil.
Saya sudah mencoba:
7z a -mx0 -tzip C:\$$-edrive\F-G-H.zip @fgh.txt
yang benar-benar berfungsi dengan baik sejauh pemilihan berlangsung, tetapi TIDAK menjaga struktur direktori. Dengan sedih.
Bagaimana saya melakukan ini?
sumber
Jawaban:
Versi stabil terbaru 7-Zip (15.14) memiliki switch -spf yang memungkinkan penyimpanan jalur absolut.
Misalnya, jika file list.txt adalah
perintah
7z a p.7z -spf @list.txt
akan menghasilkan arsip yang menyimpan path absolut seperti dalam daftar. Atau, perintah7z a p.7z -spf2 @list.txt
akan menghapus huruf drive:Jika file list.txt adalah
perintah
7z a p.7z @list.txt
akan menyimpan path relatif seperti dalam daftar, di kedua versi 9.20 dan 15.14.Saya melakukan lebih banyak tes dengan switch -spf. Hasilnya ada di sini .
sumber
Saya mendapatkannya untuk mengarsipkan direktori dengan subdirektori menggunakan yang berikut :
sumber
Coba ini sebagai gantinya:
Masalahnya tampaknya bahwa orang telah meminta untuk tahun untuk pilihan penyimpanan jalur yang tepat (seperti yang mereka miliki untuk kemampuan untuk memodifikasi arsip multi-volume yang ), namun penulis tampaknya tidak tertarik. Itulah bagian dari alasan mengapa saya mulai menggunakan WinRAR begitu banyak.
Jika Anda memiliki listfile, 7-Zip tidak akan menyimpan jalur jika file yang akan diarsipkan tidak berbagi direktori tingkat atas tunggal. Misalnya jika Anda memiliki Input.txt yang berisi yang berikut:
Jika Anda menjalankan
7z a MyArchive.7z @Input.txt
, Anda akan melihat bahwa jalur telah dilucuti sepenuhnya, yang tampaknya sepenuhnya mundur bagi saya (OTOHrar a MyArchive.rar @Input.txt
melakukan pekerjaan dengan baik).Jadi untuk mengatasi kekurangan 7-Zip, Anda dapat menggunakan file batch sebagai berikut:
Catatan: Ganti
D:\MyArchive.7z
dengan jalur yang benar ke arsip tujuan Anda. Juga, file batch harus bekerja terlepas dari apakah Anda telah mengutip lintasan di listfile Anda atau tidak.Sunting: Jika listfile Anda terlihat seperti:
atau
kemudian edit agar terlihat seperti ini sebagai gantinya:
Sekarang dengan asumsi semua file yang akan diarsipkan berada di bawah
C:\$$-edrive
, navigasikan ke C: \ dan jalankan7z a C:\MyArchive.7z @C:\Input.txt
. Menggunakan listfile path akan disimpan hanya jika tidak ada huruf drive, tidak ada garis miring terbalik awal di sana dan jika direktori tingkat atas (root) adalah sama untuk semua file. Juga, untuk hasil terbaik, saya menyarankan Anda untuk tidak membuat MyArchive.7z di C: \ $$ - edrive.sumber
7-Zip akan melihatnya sebagai duplikat, dan lewati. Jika ada cara untuk menyiasatinya, saya tidak pernah menemukannya - saya selalu membagi pekerjaan menjadi beberapa arsip.
sumber
%ZDIR%\7z a -t7z -r -mx=1 %ZIP%\mydocu "c:\My Documents\*.*" -wc:\temp
manaZDIR
path ke 7-Zip danZIP
drive tujuan.Tidak yakin bagaimana membantu dengan duplikat. Namun, saya pikir sistem yang lebih nyaman daripada batch dengan perintah penuh per akan membuat listfile.txt:
Dan kemudian kompres semuanya dengan
7z a -r -tzip archive.zip @listfile.txt
sumber
Saya telah membuat skrip kelelawar untuk digunakan dengan totalcmd "tot-zip.bat":
Kemudian di totalcmd buat pintasan untuk itu:
Kemudian ketika Anda ingin zip beberapa file / folder dan melestarikan struktur folder relatif terhadap
%TOP_DIR%
Anda cukup pilih file yang diperlukan (di suatu tempat di dalam%TOP_DIR%
) dan tekan tombol.sumber