Apakah mungkin membuat arsip zip menggunakan PowerShell?
powershell
zip
archive
Valentin Vasilyev
sumber
sumber
Jawaban:
Jika Anda menuju ke CodePlex dan ambil Ekstensi Komunitas PowerShell , Anda dapat menggunakan
write-zip
cmdlet mereka .Sejak
Anda bisa pergi ke Galeri PowerShell .
sumber
write-zip [input file/folder] [output file]
Alternatif PowerShell murni yang bekerja dengan PowerShell 3 dan .NET 4.5 (jika Anda dapat menggunakannya):
Cukup lewati path lengkap ke arsip zip yang ingin Anda buat dan path lengkap ke direktori yang berisi file yang ingin Anda zip.
sumber
PowerShell v5.0 menambahkan
Compress-Archive
danExpand-Archive
cmdlet. Halaman tertaut memiliki contoh lengkap, tetapi intinya adalah:sumber
Compress-Archive
Deskripsi: "... ukuran file maksimum yang dapat Anda kompres dengan menggunakan Compress-Archive saat ini adalah 2 GB. Ini adalah batasan API yang mendasarinya" Namun, jika Anda menggunakanSystem.IO.Compression.ZipFile
Anda dapat melewati batasan ini.System.IO.Compression.ZipFile
. Jika .NET framework yang Anda gunakan tidak memiliki batas ini, CmdLet tidak boleh mencapai batas ini. Saya memverifikasi dalam kode.-OutputPath
parameter.Cara asli dengan kerangka .NET 4.5 terbaru, tetapi sepenuhnya fitur-kurang:
Penciptaan:
Ekstraksi:
Seperti yang disebutkan, sama sekali tidak memiliki fitur, jadi jangan berharap bendera yang ditimpa .
UPDATE: Lihat di bawah ini untuk pengembang lain yang telah memperluas ini selama bertahun-tahun ...
sumber
Instal 7zip (atau unduh versi baris perintah) dan gunakan metode PowerShell ini:
Anda bisa menyebutnya seperti ini:
sumber
& "C:\Program Files\7-Zip\7z.exe" a -tzip ($file.FullName+".zip") $file.FullName
Lot telah berubah sejak jawaban awal diposting. Berikut adalah beberapa contoh terbaru menggunakan perintah Compress-Archive .
Perintah untuk membuat file arsip baru
Draft.zip
,, dengan mengompresi dua file,Draftdoc.docx
dandiagram2.vsd
, ditentukan olehPath
parameter. Level kompresi yang ditentukan untuk operasi ini adalah Optimal.Perintah untuk membuat file arsip baru
Draft.zip
,, dengan mengompresi dua file,Draft doc.docx
danDiagram [2].vsd
, ditentukan olehLiteralPath
parameter. Level kompresi yang ditentukan untuk operasi ini adalah Optimal.Perintah untuk membuat file arsip baru
Draft.zip
,, diC:\Archives
folder. File arsip baru berisi setiap file dalam folder C: \ Reference , karena karakter wildcard digunakan sebagai pengganti nama file tertentu dalam parameter Path .Perintah menciptakan arsip dari seluruh folder,
C:\Reference
PowerShell menambahkan
.zip
ekstensi ke nama file secara otomatis.sumber
Sunting dua - Kode ini jelek, kluge jelek dari masa lalu. Kamu tidak menginginkannya.
Ini kompres isi
.\in
untuk.\out.zip
dengan System.IO.Packaging.ZipPackage mengikuti contoh disiniSunting: Tidak dapat diandalkan untuk file yang lebih besar, mungkin> 10MB, YMMV. Ada hubungannya dengan bukti appdomain dan penyimpanan terisolasi. The ramah NET 4.5 Pendekatan bekerja dengan baik dari PS v3, tetapi ingin lebih banyak memori dalam kasus saya. Untuk menggunakan .NET 4 dari PS v2, file config memerlukan tweak yang tidak didukung .
sumber
Di bawah ini memberi opsi lain. Ini akan membuka folder lengkap dan akan menulis arsip ke jalur yang diberikan dengan nama yang diberikan.
Membutuhkan .NET 3 atau lebih tinggi
sumber
Berikut ini adalah solusi asli untuk PowerShell v5, menggunakan cmdlet
Compress-Archive
Membuat file Zip menggunakan PowerShell .Lihat juga Microsoft Documents untuk Compress-Archive .
Contoh 1:
Contoh 2:
Contoh 3:
sumber
Untuk kompresi, saya akan menggunakan perpustakaan (7-Zip bagus seperti yang disarankan Michal ).
Jika Anda menginstal 7-Zip , direktori yang diinstal akan berisi
7z.exe
aplikasi konsol.Anda dapat memintanya secara langsung dan menggunakan opsi kompresi yang Anda inginkan.
Jika Anda ingin terlibat dengan DLL, itu juga harus dimungkinkan.
7-Zip adalah freeware dan open source.
sumber
Bagaimana dengan
System.IO.Packaging.ZipPackage
?Ini membutuhkan .NET 3.0 atau lebih tinggi.
melalui Anders Hesselbom
sumber
Mengapa tidak ada yang melihat dokumentasi ?? Ada metode yang didukung untuk membuat file zip kosong dan menambahkan file individual ke dalamnya dibangun di perpustakaan .NET 4.5 yang sama semua orang referensi.
Lihat di bawah untuk contoh kode:
Saya mendorong Anda untuk menelusuri dokumentasi jika Anda memiliki setiap pertanyaan.
sumber
Ini benar-benar tidak jelas tetapi berfungsi. 7za.exe adalah versi mandiri 7zip dan tersedia dengan paket instal.
sumber
Jika seseorang perlu menyalin satu file (dan bukan folder): http://blogs.msdn.com/b/jerrydixon/archive/2014/08/08/zipping-a-single-file-with-powershell.aspx
sumber
Berikut adalah kode yang berfungsi, zip semua file dari folder sumber dan membuat file zip di folder tujuan.
sumber
Catatan:
ZipName: Path Lengkap dari File Zip yang ingin Anda buat.
SourceDirectory: Path lengkap ke direktori yang berisi file yang ingin Anda zip.
sumber
Ini adalah versi yang sedikit lebih baik dari jawaban sonjz, itu menambahkan opsi menimpa.
sumber
Ini juga harus berfungsi untuk mengompresi file tunggal tanpa menggunakan folder temp dan menggunakan .Net 4.5 asli, yang dikonversi dari C # dari jawaban StackOverflow ini . Menggunakan sintaks menggunakan yang lebih baik diambil dari sini .
Pemakaian:
ZipFiles -zipFilename output.zip -sourceFile input.sql -filename name.inside.zip.sql
Kode:
Menggunakan:
sumber
shell.application
bisnis itu atau 7-Zip / utilitas terpisah lainnya. Saya juga menyukaiUsing-Object
fungsi ini, meskipun saya menggunakan pendekatan yang lebih pendek, cepat-n-kotor tanpa itu.Saya menggunakan potongan ini untuk memeriksa folder backup database saya untuk file cadangan yang belum dikompres, kompres mereka menggunakan 7-Zip, dan akhirnya menghapus
*.bak
file untuk menghemat ruang disk. File pemberitahuan dipesan berdasarkan panjangnya (terkecil ke terbesar) sebelum kompresi untuk menghindari beberapa file tidak dikompresi.Di sini Anda dapat memeriksa skrip PowerShell untuk mencadangkan, mengompres, dan mentransfer file-file itu melalui FTP .
sumber
Jika Anda menginstal WinRAR:
Arti argumen: afzip membuat arsip zip, df menghapus file, ep1 tidak membuat jalur direktori lengkap dalam arsip
sumber
Di sini contoh baris perintah lengkap untuk memulai dari cmd.exe atau dari ssh atau apa yang Anda inginkan!
Salam
sumber
Memuat
[System.IO.IOException]
kelas dan menggunakan metodenya adalah langkah penting untuk menekan kesalahan yang tidak diinginkan, karena itu adalah kelas yang bukan asli PowerShell, jadi harapkan berbagai konteks kesalahan tanpa itu.Saya mengontrol script saya ke T, tetapi mendapatkan banyak output 'file exist' ekstra merah saat menggunakan
[System.IO.Compression.ZipFile]
kelasApa yang saya lakukan di sini adalah menangkap Kesalahan IO ini, seperti mengakses file yang sudah ada, menangkap kesalahan itu dan mengarahkannya ke file log yang saya pertahankan dengan program yang lebih besar.
sumber
Perintah baris perintah lengkap di Windows untuk Mengompresi dan Mengekstrak Direktori adalah sebagai berikut:
Untuk Kompresi:
Untuk mengekstraksi:
sumber
Batuan pendekatan ionik:
https://dotnetzip.codeplex.com/wikipage?title=PS-Examples
mendukung kata sandi, metode crypto lainnya, dll.
sumber
Script ini mengulang semua direktori dan zip masing-masing
Dapatkan-ChildItem -Attributes d | foreach {write-zip $ .Name "$ ($ .Name) .zip"}
sumber