it-swarm.asia

Powershell'de dosyalar nasıl sıkıştırılır / sıkıştırılır?

PowerShell'de dosyaları (* .Zip) Sıkıştıracak/Açacak bir astar var mı?

105
BlueGene

DotNetZip bunu PowerShell'den yapmanızı sağlar. Tek satırlık bir kitaplık değildir, ancak kitaplık ihtiyacınız olan PowerShell betiğini yazmanıza izin verir.

COM arabirimini de kullanabilirsiniz, bkz. Dosyaları Windows PowerShell ile Sıkıştır ve ardından bir Windows Vista Kenar Çubuğu Gadget'ı paketleyin.

"Zip powershell" veya "unzip powershell" için Google arama da yararlı sonuçlar verebilir.

21
Kevin Kuphal

Herhangi bir harici araç kullanmadan tamamen Powershell'den bunu yapabilirsiniz. Bu, geçerli çalışma dizinine test.Zip adlı bir dosyayı açar:

$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

Şimdi .NET Framework 4.5'te şu şekilde kullanabileceğiniz bir ZipFile sınıfı vardır:

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

Özellikle bunun için cmdlet'leri olan PowerShell Topluluk Uzantıları (PSCX) 'a göz atmak isteyebilirsiniz.

18
Kevin Colby

Bunun çok eski bir soru olduğunu biliyorum, ama yeni bir cevap göndereceğimi düşündüm.

Şu anda Windows 10'da veya Windows Management Framework 5 Üretim Önizlemesi aracılığıyla kullanılabilen PowerShell 5, 'zipleme' ve 'unzipping' için iki yerleşik cmdlet ile birlikte gelir:

16
Windos

Yıllardır kullandığım infozip ikili dosyalarını kullanmak ve UNIX ortamında kullanmak için en basit çözümü buluyorum.

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.

Metin çıktısının etrafına bir powershell sarıcı koymak zor olurdu ama pratikte buna hiç ihtiyacım yok, bu yüzden rahatsız etmedim.

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

5
Brian Reiter

Ayrıca Info-Zip (diğer birçok Zip yardımcı programında bulunan Zip motoru) ve 7-Zip , hem GUI hem de komut satırı Zip yardımcı programına sahip başka bir favori. Mesele şu ki, çoğu PowerShell görevi için çalışacak bazı iyi komut satırı yardımcı programları vardır.

PowerShell göz önünde bulundurularak oluşturulmamış komut satırı yardımcı programlarını çalıştırmak için bazı püf noktaları vardır:

  • Adında bir sayı ile başlayan bir yürütülebilir dosya çalıştırdığınızda, bunu bir Ve işareti (&) ile önceden yazınız.

    & 7Zip.exe

  • Her simgeyi sarın, yardımcı program komut satırından tırnak içinde görmeyi bekler.

    & "c:\boşluklu yol\SomeCommand.exe" "/ parametre2" "/ parametre2" "parametrenin2 Değeri" "Değer2" "

Bunu dene:

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

Ya da:

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

James Holwell Cevabınızı beğendim ama biraz genişlettim

# 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

Dosyaları senkronize bir şekilde Zip ve açmak için yerel Windows OS komutlarını kullanan bir PowerShell 2.0 uyumlu modül oluşturdum. Bu, Windows XP gibi eski işletim sistemlerinde çalışır ve .Net 4.5 veya başka herhangi bir harici araç gerektirmez. İşlevler, dosyaların tümü sıkıştırılıncaya/sıkıştırılıncaya kadar komut dosyasının yürütülmesini de engeller. daha fazla bilgiyi ve blogumdaki modülü burada bulabilirsiniz .

0
deadlydog

WinRAR CMD modunda argüman kabul ederek çalışabilir

0
adopilot

ionic yaklaşım sallanıyor:

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

şifreleri, diğer kripto yöntemlerini vb. destekler.