2011-12-08 2 views
0

내 디렉토리 구조는 다음과 같습니다.어떻게 반복적으로 디렉토리 구조를 복사하고 하단의 파일 만 복사 할 수 있습니까? (Windows 일괄 처리)

folder1 
    folder2 (thousands of folders like this) 
    folder3 
     someImage.jpeg 
     someDoc.doc 
     folder4 (optional folder) 
      someImage.jpeg 
      someDoc.doc 

나는 스크립트가 폴더 정 폴더 구조를 유지하지만이처럼 폴더 4에 파일을 복사 포함 된 폴더 2 초를 복사 할;

folder1 
    folder2 (thousands of folders like this) 
    folder3 
     folder4 (optional folder) 
     someImage.jpeg 
     someDoc.doc 

나는 어떤 디렉토리에 다음있는 Robocopy에게 파일을 폴더 (4)를 포함하는 폴더를 식별 할 수 있습니다 루프에 대한 간단한 있어요. 폴더 3의 파일을 건너 뛰는 동안 전체 폴더 구조를 복사하는 방법을 알아낼 수 없습니다.

+1

주어진 디렉터리 구조에서 특정 수준이 가장 낮을 수 있는지를 쉽게 결정할 수 없습니다. 예를 들어,'folder2' 폴더에'folder6'을 가진'folder5'가 들어 있다면,'folder4'와'folder6'는 모두 가장 낮을 것입니다. 그리고'folder6'이 차례로'folder7'을 포함한다면, 그것은 전체 계층 구조에서 * 가장 낮은 레벨이 될 것이지만, * 그 *를 결정하는 방법을 어떻게 생각합니까? –

답변

2

디렉터리 트리를 만드는 명령이 xcopy 명령에 있습니다.

/T   Creates directory structure, but does not copy files. Does not 
       include empty directories or subdirectories. /T /E includes 
       empty directories and subdirectories. 

먼저 폴더 4s 내의 파일을 복사하십시오.

0

@Andryi가 그의 의견에서 지적한 바와 같이, 폴더가 트리 구조에서 가능한 한 가장 낮은 지 여부를 명확하게 판단 할 수 없습니다. 그러므로 복사를 시작하기에 충분히 낮은 것으로 고려해야하는 것을 미리 결정해야합니다. 구조에서 네 번째로 폴더를 결정했다고 가정 해 보겠습니다. 이 경우이 코드를 사용하여 시작하십시오.

@echo off 
for /d %%a in (*.*) do (
    echo %%a 
    for /d %%b in (%%a\*.*) do (
    echo %%b 
    for /d %%c in (%%b\*.*) do (
     echo %%c 
     for /d %%d in (%%c\*.*) do (
     echo %%d 
     for %%f in (%%d\*.*) do (
      echo %%f 
     ) 
    ) 
    ) 
) 
) 
관련 문제