2013-07-23 2 views
1

특정 파일을 하위 폴더로 이동하기 위해 실행중인 Windows 배치 파일이 있습니다. 특정 파일을 하위 폴더에 일괄 처리로 복사하십시오.

@ECHO OFF 
ECHO Start Copy 

setlocal enabledelayedexpansion 

set SOURCE_DIR=C:\Users\paul.ikeda\Support\SNDataDemo91\SolidCAD\Inventor_in 
set DEST_DIR=C:\Users\paul.ikeda\Support\SNDataDemo91\SolidCAD\Inventor_in\Files to Import 
set FILENAMES_TO_COPY=SN_Router_1.ipt SN_Router_2.ipt SN_Router_3.ipt 

for /R "%SOURCE_DIR%" %%F IN (%FILENAMES_TO_COPY%) do (
    if exist "%%F" (
     set FILE_DIR=%%~dpF 
     set FILE_INTERMEDIATE_DIR=!FILE_DIR:%SOURCE_DIR%=! 
    echo file "%%F" 
     xcopy /Y "%%F" "%DEST_DIR%!FILE_INTERMEDIATE_DIR!" 
    ) 
) 

ECHO. 
pause 

은 하위 폴더에 내 3 개 원하는 파일을 복사하지만, 그때는 그 subsubfolder로 다시 복사, 3 개 개의 파일을 이동하고 하위 폴더에 하위 폴더를 만들고 유지, 그것은 많은 파일을 반복하는 것은에 원본 소스 폴더. 난 그저 3 개의 파일을 복사하여 대상 폴더에 복사하고 거기서 멈추고 싶습니다.

누구든지 문제를 발견 할 수 있습니까? 나는 이것을 올바르게 디버깅 할 수있는 충분한 배치 코드를 모른다. 당신은 단지 다음 파일을 복사 할 경우

답변

2

이 당신을 맞게 수

@ECHO OFF 
ECHO Start Copy 

set "SOURCE_DIR=C:\Users\paul.ikeda\Support\SNDataDemo91\SolidCAD\Inventor_in" 
set "DEST_DIR=C:\Users\paul.ikeda\Support\SNDataDemo91\SolidCAD\Inventor_in\Files to Import" 
set "FILENAMES_TO_COPY=SN_Router_1.ipt SN_Router_2.ipt SN_Router_3.ipt" 

pushd "%SOURCE_DIR%" 
for %%F IN (%FILENAMES_TO_COPY%) do (
    echo file "%%F" 
    xcopy /Y "%%F" "%DEST_DIR%\" 
) 
popd 
ECHO. done 
pause 
+0

안녕이 매우 잘 작동하지만, 내가하지 않도록 xcopy 명령을 전달할 수있는 인수 대상이 파일 인 경우 프롬프트가 또는 폴더? 지금 당장 "DEST_DIR은 ... 파일 이름이나 디렉토리를 대상 (F = File, D = Directory)으로 지정합니까? 항상 'd'를 선택해야합니다 ... – ikathegreat

+0

위의 편집을 참조하십시오 : \ "% DEST_DIR % \"'이 (가) 프롬프트를 멈추게 할 것입니다. – foxidrive

+0

우수 답변에 감사드립니다. – ikathegreat

관련 문제