2016-03-21 126 views
0

如何使用PowerShell 5.0 Compress-Archive cmdlet以遞歸方式將某個目錄中的任何.config文件壓縮並在保持目錄結構的同時進行壓縮。示例:PowerShell壓縮 - 歸檔文件擴展

Directory1 
    Config1.config 
Directory2 
    Config2.config 

目標是一個zip文件,其中還包含上述目錄結構和僅包含配置文件。

+0

你是什麼意思?找到一個配置文件,壓縮它(只有配置文件),並將該zip文件保存在與配置文件相同的位置? –

+0

我添加了一個插圖。 –

+0

文件結構是唯一清晰的部分tbh。期望的輸出是什麼樣的?你想要一個包含所有配置文件的zip文件?或每個配置文件一個zip文件? –

回答

2

我會建議將文件複製到臨時目錄並壓縮。例如:

$path = "test" 
$filter = "*.config" 

#To support both absolute and relative paths.. 
$pathitem = Get-Item -Path $path 

#If sourcepath exists 
if($pathitem) { 
    #Get name for tempfolder 
    $tempdir = Join-Path $env:temp "CompressArchiveTemp" 

    #Create temp-folder 
    New-Item -Path $tempdir -ItemType Directory -Force | Out-Null 

    #Copy files 
    Copy-Item -Path $pathitem.FullName -Destination $tempdir -Filter $filter -Recurse 

    #Get items inside "rootfolder" to avoid that the rootfolde "test" is included. 
    $sources = Get-ChildItem -Path (Join-Path $tempdir $pathitem.Name) | Select-Object -ExpandProperty FullName 

    #Create zip from tempfolder 
    Compress-Archive -Path $sources -DestinationPath config-files.zip 

    #Remove temp-folder 
    Remove-Item -Path $tempdir -Force -Recurse 
} 
相關問題