2012-02-07 95 views
5

我正在寻找将文件从目录结构复制到新文件夹。我不想保留文件结构,只是获取文件。文件结构是这样的,可以有嵌套的文件夹,但是我不想移动到名为'old'的文件夹中的任何东西。从目录结构复制文件但排除命名文件夹

我做了一些尝试,但是我的powershell知识非常有限。

的例子是在当前文件结构存在:

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

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

任何帮助?

回答

6

如何:

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

中排除了一切 '\老\' 任何地方在它的路径。

+0

谢谢,这就是我正在寻找的! – Feety 2012-02-08 00:09:17

+0

这个问题有点模棱两可,我不知道“旧”文件夹是否有子文件夹。这排除了两者。 – mjolinor 2012-02-08 00:14:49

+0

是的,这是不明确的,我确实希望排除“旧”的子文件夹。我应该指出这一点。再次感谢! – Feety 2012-02-08 01:39:38

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\"} 

(未经测试)

+0

谢谢,这就是我要求的。我很欣赏关于如何访问目录名称的解释。这将证明有用。谢谢! – Feety 2012-02-08 00:10:17

相关问题