[英]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.