簡體   English   中英

使用Powershell將zip文件解壓縮到多個文件夾中

[英]unzip zip files into multiple folders with powershell

我分別有5個zip文件和5個文件夾。 文件為:FranceData.zip,USAdata.zip,GermanData.zip,Italydata.zip和DanemarkData.zip。 文件夾為:France文件夾,USA文件夾,German文件夾,Italy文件夾和Danemark文件夾。 我想知道如何使用Powershell中的Array將這些文件解壓縮到各自的文件夾中。 我對Powershell很了解,需要幫助。 謝謝

可以使用Expand-Archive cmdlet(在PowerShell 5及更高版本中可用)完成此操作。 (可以通過$PSVersionTable變量檢查PowerShell的版本。)

要將zip文件提取到特定文件夾,請使用以下語法:

Expand-Archive -Path 'ZipFile.zip' -DestinationPath 'ZipFolder'

要么

Expand-Archive -LiteralPath 'ZipFile.zip' -DestinationPath 'ZipFolder'

如果使用-Path參數,PowerShell將識別* -Path等字符? []作為通配符,可能導致包含方括號的文件路徑出現意外行為。
如果使用-LiteralPath參數,PowerShell將不會將任何字符視為通配符。


假設所有zip文件和文件夾都遵循相同的命名模式,則可以使用如下數組:

$Countries = @(
    'France',
    'USA',
    'German'
    'Italy',
    'Danemark'
)

foreach ($Country in $Countries)
{
    $ZipFilePath = $Country + 'Data.zip'
    $DestinationPath = $Country + 'Folder'

    Expand-Archive -LiteralPath $ZipFilePath -DestinationPath $DestinationPath
}

如果文件和文件夾的命名方式不同,則可以使用字典(或KeyValuePair的集合),如下所示:

$ZipFilesAndFolders = @{
    'FranceData.zip' = 'FranceFolder'
    'USAData.zip' = 'USAFolder'
    'GermanData.zip' = 'GermanFolder'
    'ItalyData.zip' = 'ItalyFolder'
    'DanemarkData.zip' = 'DanemarkFolder'
}

foreach ($KeyAndValue in $ZipFilesAndFolders.GetEnumerator())
{
    $ZipFilePath = $KeyAndValue.Key
    $DestinationPath = $KeyAndValue.Value

    Expand-Archive -LiteralPath $ZipFilePath -DestinationPath $DestinationPath
}

使用PowerShell 4(和3)

如果安裝了.Net Framework 4.5,則可以使用由PowerShell團隊創建的Microsoft.PowerShell.Archive
PowerShell 4需要.Net Framework 4.5,因此無需任何系統更改即可正常運行。
可以在https://github.com/PowerShell/Microsoft.PowerShell.Archive中找到該模塊

所使用的語法是相同的,該函數是Expand-Archive和參數是-Path-LiteralPath ,和-DestinationPath
只需確保在使用之前導入了模塊,就可以使用Import-Module cmdlet來完成此操作,如下所示:

Import-Module -Name 'Microsoft.PowerShell.Archive' -Force

PowerShell 2

可在以下位置找到適用於PowerShell 2的解決方案: https : //stackoverflow.com/a/37814462/9447234

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM