10
votes

What is the command to unzip a file using 7z in powershell?

set-alias sz "$env:ProgramFiles\7-Zip\7z.exe"
sz x  $zipfilePath $destinationUnzipPath -aoa -r;

The command works fine but it says no files to process, everything is Ok rather than unzipping the file?

4
With the benefit of hindsight: The only problem turned out to be the syntax of the 7z.exe command - the fact that 7z was invoked from PowerShell (via an alias) was incidental.mklement0
Thanks I wanted to test a zip file. Your answer got me started. line1:sz t $zipfile line 2 echo $LASTEXITCODE #0 for success else 7zip.bugaco.com/7zip/MANUAL/exit_codes.htmJohnC

4 Answers

9
votes

This finally worked for me sz x -o$destinationUnzipPath $zipfilePath -r ;

3
votes

I didn't want to use aliases, functions or Start-Process. After a little looking around the web, I've found this gem (and I can't remember where):

& ${env:ProgramFiles}\7-Zip\7z.exe x $zipfilePath "-o$($destinationUnzipPath)" -y

And you can add a > $null at the end if you don't want to see 7z's messages!

3
votes

With 7zip PowerShell module, now it is hassle free

#   Install 7zip module

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
Set-PSRepository -Name 'PSGallery' -SourceLocation "https://www.powershellgallery.com/api/v2" -InstallationPolicy Trusted
Install-Module -Name 7Zip4PowerShell -Force

#   Extract 7zip file

$sourcefile = "c:\source\sample.7z"
Expand-7Zip -ArchiveFileName $sourcefile -TargetPath 'c:\destinaation'
0
votes

I used "fullname", which includes the path.
Also, I had to change my directory in PowerShell to the output directory of the extracted data, i.e. D:\temp

I refuse to believe that copying or extracting a bunch of files from disparate folders to a single location is a complicated task in this age.

$rars = (Get-ChildItem "D:\Path\To\folder" -Recurse *.rar).fullname
foreach ($rar in $rars) {& "C:\Program Files\7-Zip\7z.exe" e $rar}