it-swarm-id.com

Bagaimana cara Zip / unzip file di Powershell?

Apakah ada satu-liner yang akan Zip/unzip file (* .Zip) di PowerShell?

105
BlueGene

DotNetZip akan memungkinkan Anda melakukan ini dari PowerShell. Ini bukan satu baris, tetapi perpustakaan akan memungkinkan Anda untuk menulis skrip PowerShell yang Anda butuhkan.

Anda juga dapat menggunakan antarmuka COM, lihat Kompres File dengan Windows PowerShell lalu kemas Gadget Windows Vista Sidebar.

Googling "Zip powershell" atau "unzip powershell" juga dapat menampilkan hasil yang bermanfaat.

21
Kevin Kuphal

Ini adalah bagaimana Anda dapat melakukannya sepenuhnya dari Powershell tanpa alat eksternal. Ini membuka ritsleting file bernama test.Zip ke direktori kerja saat ini:

$Shell_app=new-object -com Shell.application
$filename = "test.Zip"
$Zip_file = $Shell_app.namespace((Get-Location).Path + "\$filename")
$destination = $Shell_app.namespace((Get-Location).Path)
$destination.Copyhere($Zip_file.items())
155
Ameer Deen

Sekarang di .NET Framework 4.5, ada kelas ZipFile yang dapat Anda gunakan seperti ini:

[System.Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem')
[System.IO.Compression.ZipFile]::ExtractToDirectory($sourceFile, $targetFolder)
56
mousio

Anda mungkin ingin memeriksa Ekstensi Komunitas PowerShell (PSCX) yang memiliki cmdlet khusus untuk ini.

18
Kevin Colby

Saya tahu ini adalah pertanyaan yang sangat lama, tetapi saya baru saja melihatnya tertaut di Twitter dengan alasan saya akan memposting jawaban saat ini.

PowerShell 5, saat ini tersedia di Windows 10 atau melalui Pratinjau Manajemen Windows 5 Kerangka Kerja Produksi , dilengkapi dengan dua cmdlet bawaan untuk 'zipping' dan 'unzipping':

16
Windos

Saya menemukan solusi paling sederhana untuk hanya menggunakan binari infozip yang telah saya gunakan selama bertahun-tahun dan digunakan dalam lingkungan UNIX.

PS> Zip -9r ../test.Zip * 
PS> cd .. 
PS> unzip -t test.Zip Archive:  test.Zip
    testing: LinqRepository/          OK
    testing: LinqRepository/ApplicationService.cs   OK
    testing: LinqRepository/bin/      OK 
... 
No errors detected in compressed data of test.Zip.

Akan sangat sulit untuk menempatkan pembungkus PowerShell di sekitar output teks tetapi dalam praktiknya saya tidak pernah membutuhkannya sehingga saya tidak merasa terganggu.

http://www.info-Zip.org/

5
Brian Reiter

Saya juga suka Info-Zip (mesin Zip ditemukan di sebagian besar utilitas Zip lainnya) dan 7-Zip , favorit lain yang memiliki utilitas GUI dan baris perintah Zip. Intinya adalah, ada beberapa utilitas baris perintah yang baik yang akan bekerja untuk sebagian besar tugas PowerShell.

Ada beberapa trik untuk menjalankan utilitas baris perintah yang tidak dibangun dengan mempertimbangkan PowerShell:

  • Menjalankan executable yang dimulai dengan nomor dalam nama, kata pengantar dengan Ampersand (&).

    & 7Zip.exe

  • Bungkus setiap token, utilitas mengharapkan untuk melihat dari baris perintah, dalam tanda kutip.

    & "c:\path with space\SomeCommand.exe" "/ parameter2" "/ parameter2" "Nilai parameter2" "Value2` "dengan penawaran"

Coba ini:

Zip filename.Zip (Get-ChildItem somepath\*)

Atau bahkan:

Zip filename.Zip (Get-Content ListOfFiles.txt)
5
Nathan Hartley

James Holwell Saya suka jawaban Anda tetapi saya sedikit memperluasnya

# Example
#unzip "myZip.Zip" "C:\Users\me\Desktop" "c:\mylocation"
function unzip($fileName, $sourcePath, $destinationPath)
{
    $Shell = new-object -com Shell.application
    if (!(Test-Path "$sourcePath\$fileName"))
    {
        throw "$sourcePath\$fileName does not exist" 
    }
    New-Item -ItemType Directory -Force -Path $destinationPath -WarningAction SilentlyContinue
    $Shell.namespace($destinationPath).copyhere($Shell.namespace("$sourcePath\$fileName").items()) 
}
2
Nico

Saya telah membuat modul yang kompatibel dengan PowerShell 2.0 yang menggunakan perintah OS Windows asli untuk Zip dan unzip file secara sinkron. Ini berfungsi pada OS yang lebih lama, seperti Windows XP, dan tidak memerlukan. Net 4.5 atau alat eksternal lainnya. Fungsi-fungsi ini juga akan memblokir eksekusi skrip hingga semua file telah di-zip/di-zip. Anda dapat menemukan informasi lebih lanjut dan modul di blog saya di sini .

0
deadlydog

WinRAR dapat bekerja dalam mode CMD menerima argumen

0
adopilot

Batu pendekatan ionic:

https://dotnetzip.codeplex.com/wikipage?title=PS-Examples

mendukung kata sandi, metode crypto lainnya, dll.