Reputation: 459
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
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
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
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
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
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
Reputation: 459
This finally worked for me sz x -o$destinationUnzipPath $zipfilePath -r ;
Upvotes: 12