5

我正在寻找将文件从目录结构复制到新文件夹。我不想保留文件结构,只是获取文件。文件结构是这样的,可以有嵌套的文件夹,但我不想移动名为“旧”的文件夹中的任何内容。

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

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

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

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

有什么帮助吗?

4

2 回答 2

6

这个怎么样:

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

排除路径中任何位置包含“\old\”的所有内容。

于 2012-02-07T23:52:32.483 回答
4

如果我们潜入where-object管道,我想你会得到你想要的。每个具有名为Directory( System.IO.FileInfo) 的属性和名为 的属性Name的对象old都不会被传递给Copy-Item

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

(未经测试)

于 2012-02-07T23:51:02.493 回答