Deepanshu Kalra
Deepanshu Kalra

Reputation: 459

unzip file using 7z in powershell

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?

Upvotes: 18

Views: 60499

Answers (6)

hadirgax
hadirgax

Reputation: 21

This command works well. It extracts the zip file to the destination directory:

$DESTINATION_DIR="C:\my_destination"
& "${env:ProgramFiles}\7-Zip\7z.exe" x $ZIP_FILE "-o$($DESTINATION_DIR)" -aoa -r

Upvotes: 2

grepit
grepit

Reputation: 22382

My use case was slightly different because I had multiple tar files in a directory that needed to be extracted. I'm sharing it because same command may also be used or slighly modified to be used:

here is the command that worked for me on Windows 10 via Powershell:

Notice: you need to change the paths below for your use case of course.

$srcFolderPathWithTar="C:\SomeFilder\has\multiple\tar\files"
$targ="C:\Users\your_user_name\Downloads\new" 

. "C:\Program Files\7-Zip\7z.exe"  x "-o$($targ)" "$srcFolderPathWithTar" -r -y;

Upvotes: 1

p0wd3r
p0wd3r

Reputation: 1

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}

Upvotes: 0

Prosenjit Sen
Prosenjit Sen

Reputation: 366

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'

Upvotes: 9

João Ciocca
João Ciocca

Reputation: 866

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!

Upvotes: 14

Deepanshu Kalra
Deepanshu Kalra

Reputation: 459

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

Upvotes: 12

Related Questions