2016-07-13 2 views
2

하위 디렉토리 내에 하위 디렉토리, 파일 및 파일로 완성 된 폴더를 복사하고 구조를 보존하고 이전에 존재하지 않은 새로운 위치에 생성하려고합니다. 이 folderthree가 존재하지 않습니다,존재하지 않는 위치로 폴더 구조 복사하기

Copy-Item c:\development\powershell\folderone\* c:\development\powershell\foldertwo -recurse -Container 
Copy-Item c:\development\powershell\folderone\* c:\development\powershell\folderthree -recurse -Container 

foldertwo가 존재하고 비어있는 내 PowerShell을 코드입니다.

스크립트를 실행하면 구조가 foldertwo에 올바르게 생성되지만 folderthree이 생성되지만 전체 하위 구조의 모든 파일이 모두 루트 folderthree 수준에 포함됩니다. folderone 내의 하위 폴더를 다시 만들지 않았으므로 루트 수준 인 folderthree에 모든 파일을 넣기 만하면됩니다.

내가 잘못 했습니까?

+1

내가 제대로 문제를 이해한다면'Test-Path'를 먼저 사용하고'false'로 반환한다면 ala [this] (http : // stackoverflow. co.kr/a/16911470/2486496) 여기에서 대답하십시오. – gravity

+2

고마워, 트릭을 했어 – NZJames

+0

'copy-item c : \ test c : \ test2 -recurse -container' ('*'가없는)를 사용하면 그 동작을 재현 할 수 없다. 하위 폴더. 소스에서'*'로 시도해 보면 오류가 발생하고 모든 것을 복사하지는 않지만 루트에있는 내용을 덤프하지는 않습니다. 근원에있는 별표없이 시도 했습니까? – TessellatingHeckler

답변

2

는 여기에 내가 문제를 이해하는 위의 확인에 구축, 아주 기본적인,하지만 완벽하게 작동하고 테스트 예제에서 손 :

나는, 문제는 폴더 구조를 다시에 대한 이해 것과
$folderlist = ("foldertwo", "folderthree") 
foreach ($folder in $folderlist) 
{ 
    if (!(Test-Path "C:\Development\PowerShell\$folder")) 
    { 
     mkdir ("C:\Development\PowerShell\$folder") | Out-Null 
    } 
    Copy-Item c:\development\powershell\folderone\* c:\development\powershell\$folder -recurse -Container 
} 
+0

도움을 주셔서 감사합니다 ... 내 폴더 이름 바깥에 하나의 파일이 있는데, 어떻게 한 번 복사 할 수 있습니까? – Underdog

+0

이것은 새로운 질문을 직접 게시하고 Rep를 올바르게 적립 할 수있는 좋은 기회입니다. @Underdog. 질문을 쉽게 확장하려면 [질문]을 읽고이 Q & A에 대한 링크를 고려하십시오. :-) – gravity

2

[출발지]에서 [목적지]까지. CmdLets를 사용하는 것은 과도한 잔인 함 (및 성능 손실)이므로 powershell에서도 실행될 수있는 간단한 배치 명령을 제안합니다.

xcopy [source] [destination] /T /E 

xcopy은 파일 및 디렉토리 트리를 복사하는 기능입니다. 도움말은 사례의 usefult 매개 변수에 대한 정보를 제공합니다.

/T 파일 구조는 만들지 만 파일은 복사하지 않습니다. 에 빈 디렉터리 나 하위 디렉터리가 포함되어 있지 않습니다./T/E는 다음을 포함합니다.

/E 빈 디렉토리를 포함하여 디렉토리와 하위 디렉토리를 복사합니다. /S/E와 동일합니다./T를 수정하는 데 사용할 수 있습니다.