2012-02-07 45 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

相關問題