I want to extract all .zip files in a given directory in temp using powershell

前端 未结 3 1460
一生所求
一生所求 2020-12-19 02:26

I wrote the following code for extracting the .zip files to temp:

function Expand-ZIPFile($file, $destination)
{
    $shell = new-object -com shell.applicati         


        
相关标签:
3条回答
  • 2020-12-19 03:21

    You can use this if you want to create a new folder for each zip file:

    #input variables
    $zipInputFolder = 'C:\Users\Temp\Desktop\Temp'
    $zipOutPutFolder = 'C:\Users\Temp\Desktop\Temp\Unpack'
    
    #start
    $zipFiles = Get-ChildItem $zipInputFolder -Filter *.zip
    
    foreach ($zipFile in $zipFiles) {
    
        $zipOutPutFolderExtended = $zipOutPutFolder + "\" + $zipFile.BaseName
        Expand-Archive -Path $zipFile.FullName -DestinationPath $zipOutPutFolderExtended
    
        }
    
    0 讨论(0)
  • 2020-12-19 03:24
    Get-ChildItem 'path to folder' -Filter *.zip | Expand-Archive -DestinationPath 'path to extract' -Force
    

    requires ps v5

    0 讨论(0)
  • 2020-12-19 03:26

    You have to provide the full path explicitly (without wildcards) in the following call:

    $shell.NameSpace($file)
    

    You could rewrite your function like this:

    function Expand-ZIPFile($file, $destination)
    {
        $files = (Get-ChildItem $file).FullName
    
        $shell = new-object -com shell.application
    
        $files | %{
            $zip = $shell.NameSpace($_)
    
            foreach ($item in $zip.items()) {
               $shell.Namespace($destination).copyhere($item)
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题