103 votes

Comment compresser/décompresser des fichiers avec Powershell ?

Existe-t-il une ligne unique qui permet de compresser/décompresser des fichiers (*.zip) dans PowerShell ?

0 votes

5voto

pjz Points 11925

Je trouve que la solution la plus simple est d'utiliser les binaires infozip que j'utilise depuis des années et dans un environnement 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.

Il serait facile de mettre un wrapper powershell autour de la sortie texte, mais en pratique, je n'en ai jamais eu besoin et je ne m'en suis pas soucié.

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

5voto

RomanSt Points 627

J'aime aussi Info-ZIP (le moteur Zip que l'on retrouve dans la plupart des autres utilitaires Zip) et 7-Zip un autre favori qui possède à la fois une interface graphique et un utilitaire Zip en ligne de commande. Le fait est qu'il existe de bons utilitaires en ligne de commande qui conviennent à la plupart des tâches PowerShell.

Il existe quelques astuces pour exécuter des utilitaires de ligne de commande qui n'ont pas été conçus avec PowerShell en tête :

  • Pour exécuter un exécutable dont le nom commence par un chiffre, faites-le précéder d'une esperluette (&).

    &7zip.exe

  • Enveloppez chaque jeton, que l'utilitaire s'attend à voir sur la ligne de commande, entre guillemets.

    &"c : \path avec l'espace \SomeCommand.exe " "/paramètre2" "/paramètre2" "Valeur du paramètre2" "Valeur2 `" avec une citation "

Essayez ça :

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

Ou même :

zip filename.zip (Get-Content ListOfFiles.txt)

2voto

claws Points 8398

James Holwell J'aime votre réponse mais je l'ai un peu élargie.

# 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()) 
}

0voto

adopilot Points 1481

WinRAR peut travailler en mode CMD en acceptant des arguments

0voto

Brian Mitchell Points 1881

L'approche ionique fonctionne :

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

supporte les mots de passe, les autres méthodes de cryptage, etc.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X