我希望将文件从目录结构复制到新文件夹。我不是要保留文件结构,只是获取文件。文件结构可以有嵌套文件夹,但是名为'old'的文件夹中的任何内容我都不想移动。
我做了几次尝试,但我的PowerShell知识非常有限。
当前文件结构存在的示例:
Get-ChildItem -Path "C:\Example\*" -include "*.txt -Recurse |% {Copy-Item $_.fullname "C:\Destination\"}
这给了我所有我想要的文件,包括我不想要的所有文件。我不想包含“旧”文件夹中的任何文件。要注意:有多个“旧”文件夹。我试过--exclude,但看起来它只与文件名有关,我不知道如何在路径名上排除,同时仍然复制文件。
任何帮助?
答案 0 :(得分:6)
这个怎么样:
C:\Example*" -include "*.txt -Recurse |
?{$_.fullname -notmatch '\\old\\'}|
% {Copy-Item $_.fullname "C:\Destination\"}
排除在其路径中任何位置有'\ old \'的所有内容。
答案 1 :(得分: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\"}
(未测试的)