Risposte:
DotNetZip ti consentirà di farlo da PowerShell. Non è una riga, ma la libreria ti permetterà di scrivere lo script PowerShell che ti serve.
È inoltre possibile utilizzare l'interfaccia COM, vedere Comprimere i file con Windows PowerShell, quindi creare un pacchetto di un gadget della barra laterale di Windows Vista .
Googling "zip powershell" o "decomprimi powershell" potrebbe anche rivelare risultati utili.
Ecco come è possibile farlo esclusivamente da Powershell senza strumenti esterni. Questo decomprime un file chiamato test.zip nella directory di lavoro corrente:
$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())
$destination.Copyhere($zip_file.items())
esegue la decompressione effettiva.
function unzip($filename) { if (!(test-path $filename)) { throw "$filename does not exist" } $shell = new-object -com shell.application $shell.namespace($pwd.path).copyhere($shell.namespace((join-path $pwd $filename)).items()) }
Ora in .NET Framework 4.5, esiste una classe ZipFile che puoi usare in questo modo:
[System.Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem')
[System.IO.Compression.ZipFile]::ExtractToDirectory($sourceFile, $targetFolder)
Potresti voler dare un'occhiata a The PowerShell Community Extensions (PSCX) che ha dei cmdlet specifici per questo.
So che questa è una domanda molto vecchia, ma l'ho appena vista collegata su Twitter e ho pensato di pubblicare una risposta attuale.
PowerShell 5, attualmente disponibile su Windows 10 o tramite l' anteprima di produzione di Windows Management Framework 5 , include due cmdlet integrati per "zippare" e "decomprimere":
Trovo la soluzione più semplice per usare solo i binari di infozip che ho usato per anni e usare in un ambiente 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.
Sarebbe semplice mettere un wrapper PowerShell attorno all'output del testo, ma in pratica non ne ho mai avuto bisogno, quindi non mi sono preoccupato.
Mi piace anche Info-ZIP (il motore Zip presente nella maggior parte delle altre utility Zip) e 7-Zip , un altro preferito che ha sia una GUI che un'utilità Zip da riga di comando. Il punto è che ci sono alcune buone utility da riga di comando che funzioneranno per la maggior parte delle attività di PowerShell.
Esistono alcuni trucchi per eseguire le utility da riga di comando che non sono state create pensando a PowerShell:
L'esecuzione di un eseguibile che inizia con un numero nel nome, lo prefigura con una e commerciale (&).
& 7zip.exe
Avvolgi ogni token, l'utilità si aspetta di vedere dalla riga di comando, tra virgolette.
& "c: \ percorso con spazio \ SomeCommand.exe" "/ parametro2" "/ parametro2" "Valore parametro2" "Valore2` "con un preventivo"
Prova questo:
zip filename.zip (Get-ChildItem somepath\*)
O anche:
zip filename.zip (Get-Content ListOfFiles.txt)
James Holwell Mi piace la tua risposta ma l'ho ampliata un po '
# 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())
}
L'approccio ionico oscilla:
https://dotnetzip.codeplex.com/wikipage?title=PS-Examples
supporta password, altri metodi di crittografia, ecc.
Ho creato un modulo compatibile con PowerShell 2.0 che utilizza i comandi del sistema operativo Windows nativo per comprimere e decomprimere i file in modo sincrono. Funziona su sistemi operativi meno recenti, come Windows XP, e non richiede .Net 4.5 o altri strumenti esterni. Le funzioni bloccheranno anche l'esecuzione degli script fino a quando tutti i file non saranno stati compressi / decompressi. Puoi trovare maggiori informazioni e il modulo sul mio blog qui .