# encoding: ascii
# api: powershell
# title: Unzip Files
# description: Wanted to create an unzip function for single files with an option to delete the originating zip, and also have a function for scanning through a folder structure recursively and providing the same functionality… and here it is.
# version: 0.1
# type: function
# author: JayneticMuffin
# license: CC0
# function: Unzip-File
# x-poshcode-id: 5668
# x-archived: 2017-04-17T14:38:33
# x-published: 2017-01-07T14:13:00
#
#
# Unzip the file and keep the zip
# Unzip-File -FileName 'test.zip'
# Unzip the file and delete the zip
# Unzip-File -FileName 'test.zip' -DeleteSource $True
function Unzip-File {
param (
[parameter(mandatory=$true][ValidateNotNullOrEmpty()]$fileName,
$DeleteSource = $false
)
$fileInfo = Get-Item -Path $FileName
$appName = New-Object -ComObject Shell.Application
$zipName = $appName.NameSpace($fileInfo.FullName)
$extPath = $fileInfo.Directory.FullName + '\' + $fileInfo.BaseName
$null = New-Item -Path $extPath -ItemType Directory -Force
$dstFolder = $appName.NameSpace($extPath)
$dstFolder.Copyhere($zipName.Items())
If ($DeleteSource) {Remove-Item -Path $fileInfo.FullName}
}
function Unzip-MultipleFiles {
param (
[parameter(mandatory=$true)][ValidateNotNullOrEmpty()][string]$Path,
$DeleteSource = $false
)
$Files = Get-ChildItem -Path $Path -Recurse -Include '*.zip' | Select FullName,Directory,BaseName
$Files | % {
Unzip-File -FileName $_.FullName
If ($DeleteSource) {Remove-Item -Path $_.FullName}
}
}