2012-01-26 1 views
1

디렉토리 1에서 디렉토리 2까지 모든 파일 (하위 폴더에도있는 파일)을 복사 한 다음 디렉토리 2에서 발견 된 추가 파일 (또는 가능한 경우 디렉토리)을 directory3으로 복사하는 일괄 처리를 작성하려고합니다. 즉, directory2로 directory2를 미러링하려고하는데, 제거 작업 대신 directory3에 여분의 파일을 이동하려고합니다 ...robocopy 추가 파일이 다른 폴더로 이동합니다.

지금까지 텍스트 파일에서 이러한 추가 파일을 가져 왔습니다. ... 지금, 나는

ROBOCOPY directory1 directory2 /E /COPYALL /R:0 /XO /X /tee /njh /njs /np /ns /nc /ndl > Extrafiles.txt 

또한, Extrafiles.txt은 이동하기 전에 약간의 문자열 조작을 의미 각 파일 경로의 시작에 여분의 공간을 많이 포함되어 있습니까 ... 진행하는 방법을 모른다 파일. 그리고 존재하는 경우 자동으로 대상 디렉토리를 생성하여 파일을 이동하는 데 사용할 명령은 무엇입니까? 어떤 도움
   directory2\File1.txt 
       directory2\subdirectory2\deeper\File2.txt 

Extrafiles.txt

샘플 출력이 이해 될 것이다. 고맙습니다.

만들기가 좀 더 명확 :

\subdir1 
    file4.txt 
    file5.txt 
    \deeper 
     file6.txt 
     file7.doc 
file1.txt 
file2.txt 

및 directory2 이미 포함되어 있습니다 :

한다고 가정 Directory1에는 포함

:

\subdir1 
    file4.txt 
    file007.ppt 
    \deeper 
     file6.txt 
     file7.doc 
     \deepest 
      file155.txt 
file1.txt 

그런 다음 나는 이러한 파일을 복사 할

directory1\file2.txt to directory2\file2.txt 
directory1\subdir1\file5.txt to directory2\subdir1\file5.txt 

개 그리고이 파일을 이동합니다 :

directory2\subdir1\file007.ppt to directory3\subdir1\file007.ppt 
directory2\subdir1\deeper\deepest\file155.txt to directory3\subdir1\deeper\deepest\file155.txt 

희망은 내가 충분히 분명히했다 : 당신은 robocopy에 의해 생성 된 파일의 내용 (for /? 참조)을 반복하는 for을 사용할 수 있습니다

+0

나는 당신이 ROBOCOPY를 사용하여 간단하게 원하는 모든 것을 할 수 있어야한다고 생각합니다. 그러나 나는 당신의 요구 사항을 완전히 이해하지 못합니다. 작은 가상의 디렉토리 1, 2 및 3 (각각 하나 이상의 하위 디렉토리 포함)이 어떻게 보이는지를 나열한 다음 작업이 완료된 후 어떻게 보이는지 보여주는 경우 - 나 또는 다른 누군가가 더 좋을 수 있습니다. 당신을 도울 수 있어요. – dbenham

+0

editted! 다시 확인해주세요 ... –

답변

1

.

은 그럼 당신은 (set /? 참조) 대상 경로를 생성하는 지연 확장과 변수 대체를 사용할 수 있으며, 마지막으로 move (call /? 참조) 다음 필요한 경우 mkdir을 할 것입니다 서브 루틴을 호출합니다.

초안 솔루션은 다음과 같습니다

@echo off 
setlocal enabledelayedexpansion 

set srcdir=directory2 
set tgtdir=directory3 

for /f "usebackq tokens=*" %%A in ("Extrafiles.txt") do (
    set srcpath=%%A 
    set tgtpath=!srcpath:%srcdir%=%tgtdir%! 
    call :mkdirmove !srcpath! !tgtpath! 
) 

goto :EOF 

:mkdirmove 
    if not exist %~dp2nul mkdir %~dp2 
    move %1 %2 
goto :EOF 
+0

고마워요 .. 작동하는지 봅시다 : P –