2012-02-07 4 views
5

디렉토리 구조에서 새 폴더로 파일을 복사하려고합니다. 파일 구조를 유지하려고하지 않고 파일을 가져옵니다. 파일 구조는 중첩 된 폴더가 될 수 있지만, 'old'라는 폴더에있는 모든 것은 이동하지 않으려 고합니다.디렉토리 구조에서 파일을 복사하지만 명명 된 폴더는 제외합니다.

필자는 몇 번의 시도를했지만 필자의 PowerShell 지식은 매우 제한적입니다. 현재 파일 구조가 존재하는 것으로

예 :

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

이 나에게 내가 원하지 않는 모든 파일을 포함한 모든 파일을 모두 내가 원하는을 제공합니다. 나는 'old'폴더에있는 파일을 포함하고 싶지 않습니다. 참고 : 여러 개의 '이전'폴더가 있습니다. 나는 -exclude를 시도했으나 파일 이름과 관련이있는 것처럼 보였고 파일을 복사하는 동안 경로 이름에 -exclude를 사용하는 방법을 모르겠습니다.

어떤 도움이 필요합니까?

답변

6

(테스트되지 않은)

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

이 방법에 대해 :

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

'\ 오래된 \'모든 것을 제외는 경로의 어느 곳에서.

+0

고마워,이게 내가 찾고있는거야! – Feety

+0

질문은 약간 모호했으며 "오래된"폴더에 하위 폴더가 있는지 여부를 알 수 없었습니다. 이 둘은 제외됩니다. – mjolinor

+0

예, 모호했습니다. 그리고 '오래된'하위 폴더를 제외 시키려고했습니다. 나는 그것을 지정해야만했다. 다시 한 번 감사드립니다! – Feety

4

우리가 파이프 라인에 약간 을 몰래 넣으면 나는 당신이 원하는 것을 얻을 것이라고 생각합니다. 속성 값이 Directory (System.IO.FileInfo) 인 속성이 Name이고 값이 old 인 각 개체는 Copy-Item으로 전달되지 않습니다.

+0

감사합니다. 이것은 내가 요청한 것입니다. 디렉토리 이름에 액세스하는 방법에 대한 설명에 감사드립니다. 이것은 유용 할 것입니다. 고맙습니다! – Feety