2012-09-10 3 views
2

다른 폴더 (예 : a, b, c 등)가 있으며 각 폴더의 파일은 x, y, z 등 서로 다릅니다. 파일 x, y, z는 각 폴더에 있습니다. 단일 명령을 사용하여 다른 폴더의 각 파일을 복사하는 방법이 있습니까? 그 결과를 모든 폴더의 한 파일에 x 파일로 저장하고 싶습니다.DOS를 사용하여 여러 파일 복사

예 :. XCOPY/S X * * C : \ 다른 폴더에서 모든 X 파일을 복사 할 수 있습니다

폴더

. 단일 명령을 사용하여 다른 폴더의 x, y, z를 복사하려면 어떻게합니까? 감사합니다

+0

흠 ... 같은 이름의 여러 파일을 어떻게 하나의 대상 폴더에 넣을 것으로 예상합니까? 그것은 단순히 할 수 없습니다. 파일을 한 폴더에 공존 시키려면 파일의 이름을 바꾸거나 병합해야합니다. – dbenham

답변

1

배치 파일이나 cmd에서 직접 'for'를 사용해야합니다.

for %I in (file1.txt file2.txt file3.txt) do xcopy\s %I c:\somedir\ 

대신 파일 이름의 당신은 DOS에서 하나의 명령으로이 작업을 수행 할 수있는 방법은 없습니다 다른 폴더

+0

또는 DOS for 루프를 사용하는 경우 : for %% i in (file1.txt file2.txt file3.txt) do (xcopy/s %% i .. \ somedir)' – Underverse

0

에 다른 파일의 절대/상대 경로를 줄 수 있습니다. 필요한 스크립트는 아래와 같습니다. 이것은 당신이이 같은로부터 수집하려고하는 트리의 루트 폴더에서 실행 할 수 있습니다

batch.bat x*.* 

그것은 X와 일치하는 모든 파일을 수확합니다 * * 반복적으로 현재 디렉토리와 모든 하위 디렉토리에.. 그들은이 형식으로 저장됩니다이 도움이

@echo off 
FOR /F "delims=" %%I IN ('DIR .\%1 /B /AA /S') DO (CALL :COPYFILE %%I) 
GOTO END 

:COPYFILE 
set "ofn=%~1" 
set "fn=%~1" 
call:MakeRelative fn 
set fn=%fn:\=% 
set fn=%fn::=% 
copy %ofn% %fn% 
goto:eof 

:MakeRelative file base -- makes a file name relative to a base path 
::      -- file [in,out] - variable with file name to be converted, or file name itself for result in stdout 
::      -- base [in,opt] - base path, leave blank for current directory 
:$created 20060101 :$changed 20080219 :$categories Path 
:$source http://www.dostips.com 
SETLOCAL ENABLEDELAYEDEXPANSION 
set src=%~1 
if defined %1 set src=!%~1! 
set bas=%~2 
if not defined bas set bas=%cd% 
for /f "tokens=*" %%a in ("%src%") do set src=%%~fa 
for /f "tokens=*" %%a in ("%bas%") do set bas=%%~fa 
set mat=&rem variable to store matching part of the name 
set upp=&rem variable to reference a parent 
for /f "tokens=*" %%a in ('echo.%bas:\=^&echo.%') do (
    set sub=!sub!%%a\ 
    call set tmp=%%src:!sub!=%% 
    if "!tmp!" NEQ "!src!" (set mat=!sub!)ELSE (set upp=!upp!..\) 
) 
set src=%upp%!src:%mat%=! 
(ENDLOCAL & REM RETURN VALUES 
    IF defined %1 (SET %~1=%src%) ELSE ECHO.%src% 
) 
EXIT /b 

:END 

희망 :

여기
folder1\x1.txt - > folder1x1.txt 
folder2\x5.txt - > folder2x5.txt 
folder3\x1.txt - > folder3x1.txt 

코드입니다!

관련 문제