2016-08-24 133 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

相关问题