【问题标题】:Copy files from directory structure but exclude a named folder从目录结构复制文件但排除命名文件夹
【发布时间】:2012-02-29 10:33:51
【问题描述】:

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

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

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

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

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

有什么帮助吗?

【问题讨论】:

    标签: powershell file-copying


    【解决方案1】:

    如果我们将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\"}
    

    (未测试)

    【讨论】:

    • 谢谢,这是我要求的。我很欣赏有关如何访问目录名称的解释。这将证明是有用的。谢谢!
    【解决方案2】:

    这个怎么样:

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

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

    【讨论】:

    • 谢谢,这就是我要找的!
    • 这个问题有点模棱两可,我不知道“旧”文件夹是否有子文件夹。这不包括两者。
    • 是的,这是不明确的,我确实希望排除“旧”的子文件夹。我应该指定的。再次感谢!
    • 对于任何其他尝试使用它的人,"*.txt 需要一个结束引号"*.txt" 才能工作,但错字出现在原始问题中,所以它最终出现在我想的所有答案中.
    猜你喜欢
    • 2010-11-04
    • 1970-01-01
    • 2021-12-23
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    相关资源
    最近更新 更多