it-swarm-vi.tech

Làm cách nào để Zip / giải nén tập tin trong Powershell?

Có một lớp lót nào sẽ nén/giải nén tệp (* .Zip) trong PowerShell không?

105
BlueGene

DotNetZip sẽ cho phép bạn làm điều này từ PowerShell. Nó không phải là một lớp lót, nhưng thư viện sẽ cho phép bạn viết tập lệnh PowerShell mà bạn cần.

Bạn cũng có thể sử dụng giao diện COM, xem Nén tệp bằng Windows PowerShell sau đó đóng gói tiện ích thanh bên Windows Vista.

Googling "Zip powershell" hoặc "unzip powershell" cũng có thể tạo ra kết quả hữu ích.

21
Kevin Kuphal

Đây là cách bạn có thể làm điều đó hoàn toàn từ Powershell mà không cần bất kỳ công cụ bên ngoài nào. Điều này giải nén một tệp có tên test.Zip vào thư mục làm việc hiện tại:

$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

Bây giờ trong .NET Framework 4.5, có một lớp ZipFile mà bạn có thể sử dụng như thế này:

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

Bạn có thể muốn xem Phần mở rộng cộng đồng PowerShell (PSCX) có lệnh ghép ngắn dành riêng cho việc này.

18
Kevin Colby

Tôi biết đây là một câu hỏi rất cũ, nhưng tôi chỉ thấy nó được liên kết trên Twitter trên hình tôi sẽ đăng một câu trả lời hiện tại.

PowerShell 5, hiện có sẵn trên Windows 10 hoặc thông qua Bản xem trước sản xuất khung quản lý Windows 5 , đi kèm với hai lệnh ghép ngắn tích hợp để 'nén' và 'giải nén':

16
Windos

Tôi tìm thấy giải pháp đơn giản nhất để chỉ sử dụng các tệp nhị phân thông tin mà tôi đã sử dụng trong nhiều năm và sử dụng trong môi trường 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.

Sẽ rất khó khăn khi đặt một trình bao bọc quyền hạn xung quanh đầu ra văn bản nhưng trong thực tế tôi không bao giờ cần điều đó vì vậy tôi không bận tâm.

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

5
Brian Reiter

Tôi cũng thích Info-Zip (công cụ Zip được tìm thấy trong hầu hết các tiện ích Zip khác) và 7-Zip , một mục ưa thích khác có cả tiện ích Zip và GUI dòng lệnh. Vấn đề là, có một số tiện ích dòng lệnh tốt sẽ hoạt động cho hầu hết các tác vụ PowerShell.

Có một số thủ thuật để chạy các tiện ích dòng lệnh chưa được xây dựng với PowerShell:

  • Chạy một tệp thực thi bắt đầu bằng một số trong tên, mở đầu nó bằng Ampersand (&).

    & 7Zip.exe

  • Gói từng mã thông báo, tiện ích dự kiến ​​sẽ nhìn thấy từ dòng lệnh, trong dấu ngoặc kép.

    & "c:\path với dấu cách\someCommand.exe" "/ tham số2" "/ tham số2" "tham số2 của giá trị" "Value2` "với một trích dẫn"

Thử cái này:

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

Hoặc thậm chí:

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

James Holwell Tôi thích câu trả lời của bạn nhưng tôi đã mở rộng nó ra một chút

# 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

Tôi đã tạo một mô-đun tương thích PowerShell 2.0 sử dụng các lệnh hệ điều hành Windows gốc để Zip và giải nén các tệp một cách đồng bộ. Điều này hoạt động trên các hệ điều hành cũ hơn, như Windows XP và không yêu cầu .Net 4.5 hoặc bất kỳ công cụ bên ngoài nào khác. Các chức năng cũng sẽ chặn thực thi tập lệnh cho đến khi tất cả các tệp đã được nén/giải nén. Bạn có thể tìm thêm thông tin và mô-đun trên blog của tôi ở đây .

0
deadlydog

WinRAR có thể hoạt động ở chế độ CMD chấp nhận đối số

0
adopilot

Các đá tiếp cận ionic:

https://dotnetzip.codeplex.com/wikipage?title=PS- Ví dụ

hỗ trợ mật khẩu, các phương thức mật mã khác, v.v.

0