2016-08-24 155 views
0

我試圖通過io.compression.zip文件提供Get-ChildItem調用的結果來創建「E:\ Applications_Server_Test」的壓縮文件,不包括兩個文件夾「BACKUP」和「BACKUP2」。Powershell - 將文件夾/文件添加到zip,同時排除某些文件夾

但是,Powershell似乎將它解釋爲「$ items =一串目錄和文件名」,而不是我想壓縮的目錄和文件的遞歸集合。我可以找到有關使用Get-ChildItem排除目錄的教程,我可以找到關於如何壓縮完整目錄或壓縮多個目錄的教程,但是我無法找到任何有關排除目錄的壓縮目錄。有人可以告訴我我要去哪裏嗎?

$source = "E:\Applications_Server_Test" 
$destination = "E:\AST_Dump.zip" 

$items = Get-ChildItem $source -Recurse | ?{ $_.fullname -notmatch "\\backup\\?" } 

Add-Type -assembly "system.io.compression.filesystem" 
[io.compression.zipfile]::CreateFromDirectory($items, $destination) 

謝謝!

+0

請參閱[使用powershell壓縮文件](http://serverfault.com/a/456496) – wOxxOm

+0

我有6個目錄和2個文件在此根目錄「Applications_Server_Test」文件夾中。 BACKUP 備份服務器 DIR1 DIR2 DIR3 DIR4 Genericfile.txt Genericfile.dat 我只是不包括兩個備份文件夾,但我還是想等四個文件夾,任何遞歸文件和文件夾的兩根級別的文件。我想用Powershell將剩餘的文件和文件夾打包到一個zip文件中。我唯一的選擇是象徵性地鏈接我想要的其他地方的所有東西並打包它或爲每個文件夾創建一個.zip? –

回答

0

目前您正嘗試歸檔對象$ items,而不是文件夾。不幸的是,這不會奏效。 嘗試在同一個驅動器上移動備份文件夾(這隻會更改驅動器上的記錄並且不會移動任何數據),然後歸檔整個「E:\ Applications_Server_Test」文件夾並移回備份文件夾。

其他選項是使用ZipArchive.CreateEntry方法並通過文件將文件添加到存檔中。但這不是很優雅;)

+0

我認爲可以在每個所需文件的新文件夾中創建符號鏈接,因此不需要實際複製文件。 – wOxxOm

+0

問題是備份文件夾是應用程序的一部分。他們需要留在同一個地方。我只想抓住根目錄中的其他文件和文件夾,並將它們壓縮,同時單獨保留BACKUP和BACKUP2。 –

+0

只需在新文件夾中使用符號鏈接:[示例](https://www.google.com/#q=powershell+create+symlink) – wOxxOm

相關問題