SHOW:
|
|
- or go back to the newest paste.
| 1 | # bulkUnzipFiles.ps1 | |
| 2 | ||
| 3 | # This script will take a directory of zip files, unzip them to individual folders, and delete the source zip files | |
| 4 | # Contains error handling and logging | |
| 5 | # Will fail if source files contain square bracekts | |
| 6 | ||
| 7 | $SourceFileLocation="E:\source\*" | |
| 8 | $DestinationFileLocation="e:\destination\" | |
| 9 | ||
| 10 | $ErrorLogfile=[System.IO.Path]::GetTempFileName() | |
| 11 | ||
| 12 | $listOfFiles=get-childitem $SourceFileLocation -Include *.zip | |
| 13 | ||
| 14 | Add-Type -AssemblyName System.IO.Compression.FileSystem | |
| 15 | function Unzip | |
| 16 | {
| |
| 17 | param([string]$zipfile, [string]$outpath) | |
| 18 | ||
| 19 | [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath) | |
| 20 | } | |
| 21 | ||
| 22 | ||
| 23 | Foreach ($file in $listOfFiles) | |
| 24 | {
| |
| 25 | ||
| 26 | ||
| 27 | $UnzipErrorMessage=$NULL | |
| 28 | $DeleteErrorMessage=$NULL | |
| 29 | ||
| 30 | $DestinationFolder=$DestinationFileLocation+$File.Basename | |
| 31 | ||
| 32 | write-host $file.fullname -----> $DestinationFolder | |
| 33 | try | |
| 34 | {
| |
| 35 | Unzip $file.fullname $DestinationFolder -erroraction stop | |
| 36 | } | |
| 37 | Catch | |
| 38 | {
| |
| 39 | $UnzipErrorMessage=$_.Exception.Message | |
| 40 | Write-host $UnzipErrorMessage+"`r`n" | Out-File -FilePath $ErrorLogfile -Append | |
| 41 | $file.fullname+" threw "+$UnzipErrorMessage | Out-File -FilePath $ErrorLogfile -Append | |
| 42 | ||
| 43 | } | |
| 44 | if (-Not $UnzipErrorMessage) | |
| 45 | {
| |
| 46 | try | |
| 47 | {
| |
| 48 | write-host Deleting $file.fullname | |
| 49 | # Remove-item $file.fullname -erroraction stop -whatif | |
| 50 | Remove-item $file.fullname -erroraction stop | |
| 51 | } | |
| 52 | Catch | |
| 53 | {
| |
| 54 | $DeleteErrorMessage=$_.Exception.Message | |
| 55 | Write-Host $DeleteErrorMessage | |
| 56 | $file.fullname+" threw "+$DeleteErrorMessage | Out-File -FilePath $ErrorLogfile -Append | |
| 57 | } | |
| 58 | } | |
| 59 | ||
| 60 | } | |
| 61 | ||
| 62 | $ErrorLogfile=Get-ChildItem $ErrorLogfile | |
| 63 | If ($ErrorLogFile.length -ne 0) | |
| 64 | {
| |
| 65 | write-error "Errors were encountered. Error log is here: $ErrorLogFile`r`n" | |
| 66 | get-content $ErrorLogfile | |
| 67 | } | |
| 68 | else | |
| 69 | {
| |
| 70 | remove-item -path $ErrorLogfile | |
| 71 | } | |
| 72 | ||
| 73 | # references | |
| 74 | # https://stackoverflow.com/questions/27768303/how-to-unzip-a-file-in-powershell | |
| 75 | # http://anonit.net/create-a-zip-file-on-powershell/ |