从目录结构复制文件但排除指定的文件夹

时间:2012-02-07 23:34:30

标签: powershell file-copying

我希望将文件从目录结构复制到新文件夹。我不是要保留文件结构,只是获取文件。文件结构可以有嵌套文件夹,但是名为'old'的文件夹中的任何内容我都不想移动。

我做了几次尝试,但我的PowerShell知识非常有限。

当前文件结构存在的示例:

Get-ChildItem -Path "C:\Example\*" -include "*.txt -Recurse |% {Copy-Item $_.fullname "C:\Destination\"}

这给了我所有我想要的文件,包括我不想要的所有文件。我不想包含“旧”文件夹中的任何文件。要注意:有多个“旧”文件夹。我试过--exclude,但看起来它只与文件名有关,我不知道如何在路径名上排除,同时仍然复制文件。

任何帮助?

2 个答案:

答案 0 :(得分:6)

这个怎么样:

C:\Example*" -include "*.txt -Recurse |
  ?{$_.fullname -notmatch '\\old\\'}|
    % {Copy-Item $_.fullname "C:\Destination\"}

排除在其路径中任何位置有'\ old \'的所有内容。

答案 1 :(得分:4)

如果我们在管道中潜行一点where-object,我想你会得到你想要的东西。具有名为DirectorySystem.IO.FileInfo)的属性且具有值Name且属性为old的属性的每个对象都不会传递给Copy-Item

Get-ChildItem -Path "C:\Example*" -include *.txt -Recurse | ? {-not ($_.Directory.Name -eq "old")} |  % {Copy-Item $_.fullname "C:\Destination\"}

(未测试的)