전체 디렉토리 (디렉토리 폴더 포함)를 다른 디렉토리로 복사하는 명령 줄 명령


65

커맨드 라인을 사용하여 한 디렉토리를 다른 디렉토리에 복사하고 싶습니다. 예를 들어 디렉토리 C:/test와가 C:/test2있습니다.

나는 복사 할 C:/testC:/test2결과가 될 수 있도록C:/test2/test

지금까지 찾은 모든 파일은 C:/test에 포함 된 파일과 폴더 만 복사 C:/test2하지만 부모 디렉토리는 제외합니다.


1
xcopy 사용

답변:


49

스위치 XCOPY와 함께 사용해보십시오 /E. 자세한 내용은 여기를 참조하십시오 .

나는 몇 년 안에 내 뇌에서이 정보에 접근 할 필요가 없었습니다 !

최신 정보

문서는 작성해야하므로 소스 디렉토리에 복사합니다 모든 파일과 하위 디렉토리 (상위 디렉토리가 생성되지 않는다는 것을 의미)라고 말한다 testC:\test2먼저 한 후 사용 XCOPY.


2
Xcopy의 '/ T'스위치는 파일없이 디렉토리 및 하위 디렉토리 구조 복사를 수행합니다.
mfg

2
robocopy /CREATE /COPYALL /DCOPY:T src dst폴더와 빈 파일을 복사하고 모든 타임 스탬프 및 기타 속성을 유지 하는 데 더 좋습니다 .
user1016274

2
폴더가 test여전히 생성되어야 하기 때문에 실제로 질문에 대한 답변을 제공하지 않습니다 .
IGRACH

3
@IGRACH 나는 생각 md test하고 사용하는 xcopy것이 분명했습니다.
vivin

1
문제는 copy폴더가 새 폴더를 만들지 않고 복사 한 폴더에 관한 것입니다.
IGRACH

34
xcopy c:\test c:\test2\test /s /e /h

XCOPY에 대한 정보는 다음과 같습니다 [ 1 , 2 ]


2
"D"입력 요청을 중지하는 방법은 무엇입니까?
YumYumYum

2
@YumYumYum : / I 스위치를 사용할 수 있습니다. "/ I 대상이없고 둘 이상의 파일을 복사하는 경우 대상이 디렉토리 여야한다고 가정합니다."
Thijs Tijsma

18

백업 스크립트를 작성하는 경우 ROBOCOPY를 사용하십시오. xcopy는 더 이상 사용되지 않으며 조만간 사용이 중단 될 수 있습니다. robocopy는 xcopy가 할 수있는 모든 것을 할 수 있습니다. 또한보다 유연하고 신뢰할 수 있습니다. robocopy로 스크립트를 작성하면 미래에 대비할 수 있습니다.


  1. robocopy를 사용하여 폴더를 쉽게 복사하십시오. robocopy 명령은 xcopy 명령을 대체합니다. 내용 정의에 대해 걱정할 필요없이 전체 폴더를 빠르게 복사 할 수 있습니다. 예를 들어, C : \ tools 디렉토리의 모든 내용을 새 폴더 D : \ backup \ tools에 복사하려면 다음을 입력하십시오.

    robocopy C:\tools D:\backup\tools /e
    

    / e 수정자는 robocopy에게 모든 하위 디렉토리를 포함하도록 지시합니다. 빈 폴더가 포함됩니다. robocopy는 숨겨진 파일과 시스템 파일을 자동으로 복사합니다. 대상 위치에없는 경우 새 디렉토리를 작성합니다.

  2. 디렉토리를 미러링하십시오. 디렉토리 미러링은 백업을 만드는 데 좋습니다. robocopy의 미러 옵션은 모든 내용을 원본에서 대상으로 복사합니다. 그런 다음 소스에 존재하지 않는 대상을 삭제합니다. 이렇게하면 백업에 최신 버전의 파일 만 있어야합니다. 예를 들어 C : \ Users \ My Documents를 D : \ backup \ My Documents로 미러링하려면 다음을 입력하십시오. [4]

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /mir
    

    이 기능은 원본 파일의 모든 권한을 유지합니다.

  3. 다시 시작을 활성화하십시오. 복사 도중 연결이 끊어진 경우 프로세스를 다시 시작하는 기능을 포함시킬 수 있습니다.

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /z
    
  4. 복사 과정을 기록하십시오. robocopy를 사용하면 로그 파일을 만들 수 있습니다. 이를 통해 문제를 찾아 내거나 복사 된 내용의 아카이브를 생성 할 수 있습니다.

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /log+:<filename>.txt
    

    / log + 수정자는 기존 로그 파일을 덮어 쓰지 않고 추가합니다. 이전 로그 파일을 덮어 쓰려면 /log:.txt를 사용하십시오.


8

xcopy 보다 robocopy 를 추천합니다. 타임 스탬프를 그대로 유지하는 것을 포함하여 더 많은 옵션이 있기 때문에 필수적입니다.

Robocopy는 XP / 2003에 추가해야하지만 Vista부터는 표준입니다.

나는 보통 xxcopy를 사용 하지만 64 비트 버전은 무료가 아닙니다.


1
robocopyWindows 프로그램입니다. 문제는 DOS에 관한 것이었다.
grawity

9
@grawity : 실제로 16 비트 DOS를 사용할 가능성은 실제 세계에서와 같이 CMD를 DOS라고 부르는 가능성에 비해 매우 작습니다.
paradroid

진짜 질문은 : robocopy가 Microsoft 프로그램입니까?
knocte

@knocte 그렇습니다
yossico


3

원래의 질문이 내가 대답을 찾고있는 것이라면, 분명히 위의 어느 누구도 명확한 해결책을 찾지 못했습니다.

내가 찾고있는 것은 테스트 디렉토리를 다시 입력하지 않고 test2 디렉토리에 복사하는 것입니다. 같은 것

xcopy /isvy c:\test d:\test2

여기서 d:\test2\test복사하기 전에 존재하지 않지만 이후 않습니다. 이렇게하면 목적지 경로에서 두 번째로 잘못 입력 한 테스트를 줄일 수 있습니다. 위의 명령은 모든 파일과 디렉토리를 test2에 복사하지만 테스트 디렉토리는 작성하지 않습니다.

지금까지

xcopy /isvy c:\test d:\test2\test

이 작업을 수행 할 수있는 유일한 방법입니다. 다시 입력 문제가있는 경우 소스 및 대상 디렉토리가 일치한다고 보장 할 수 없습니다.

이 문제를 해결하는 대안은

set mydir=test&&xcopy /isvy c:\%mydir% c:\test2\%mydir%

mydir변수에 대상 디렉토리를 설정 한 다음 소스 및 대상 경로 모두 에서 해당 변수를 사용합니다. 변수를 잘못 입력하면 오류가 발생하거나 대상 디렉토리가 %시작과 끝에 있을 수 있습니다 .

입력하는 것이 길지만 잘못된 이름을 얻을 가능성은 적습니다. 그들은 눈에 띄게 될 것입니다.


실제로의 xcopy /ievy c:\test d:\test2\test디렉토리 트리 구조를 유지하고, 년에 set mydir=test&xcopy /isvy c:\%mydir% c:\test2\%mydir%단 1 & 충분하다, 값을 설정하는 결과가 항상 성공 때문이다.
NetwOrchestration

0
xcopy SWITCHES SOURCE DESTINATION

가능한 곳 SWITCHES:

  • 전체 디렉토리 구조를 복사하려면 다음을 수행하십시오.

    /hiev

  • 대상에서 파일을 덮어 쓰려면 (대상 폴더가 이미있는 경우) :

    /hievry

  • ACL + 속성을 덮어 쓰고 복사하려면 다음을 수행하십시오.

    /hievxok

귀하의 경우에 가장 적합한 :

xcopy /hievry C:\test C:\test2\test


0

폴더 이름을 포함하여 여러 폴더를 대상 위치에 복사 해야하는 비슷한 상황이 있었고이 질문에 대한 답변이 도움이되기를 희망했지만 실제로는 그렇지 않습니다.

첫째, 분명히이 기능이 필요한 경우가 있으며 C : \ Windows \ Assembly \ GAC_MSIL에서 폴더를 복사해야 할 때 발생했습니다. Windows 탐색기는이 폴더 표시를 거부하므로 명령 프롬프트를 사용해야합니다.

GAC 폴더에 익숙하다면 폴더 이름이 사소하지 않고 잘못 입력하면 잘못되기 쉽다는 것을 알 수 있습니다.

따라서 스크립트를 사용하지 않는 한 디렉토리를 미리 만드는 것은 실제로 유일한 옵션이 아닙니다.

먼저 임시 파일로 복사하려는 폴더를 덤프하십시오. 일반적으로 다음과 같은 패턴을 기반으로합니다.

dir /B policy* > Folders.txt

그런 다음 덤프의 항목을 반복하여 대상으로 복사하십시오. 대상 인수를 백 슬래시 (\)로 끝내면 Xcopy가 폴더 만들기를 처리합니다.

for /F "tokens=*" %%A in (Folders.txt) do xcopy /E /S %%A C:\Dest\%%A\

이 두 명령을 모두 배치 파일에 넣고 실행하십시오.

이제 xcopy 또는 robocopy에만 내장되어 있다면.


0

XCOPY SourceDrive : 대상 드라이브 : / S / E


슈퍼 유저에 오신 것을 환영합니다! 이것을 설명 할 수 있습니까? (특히 /S /E깃발)
bertieb

0

귀하의 질문에 대한 기능적 대안 답변을 찾았습니다.

첫째, FORFILESwith /S매개 변수를 사용 하면 모든 하위 디렉토리에 C:\test도달 할 수 있습니다.

둘째, /C매개 변수를 사용하면 기본 변수를 사용하여 일련의 명령을 시작하여 대상에서 ID 디렉토리를 만들고 두 개의 조건부 구조를 사용하여 파일을 그 안에 복사 할 수 있습니다.

첫 번째 조건부 구조 @isdir==TRUE(대문자를 사용해야 함)는 소스에서만 디렉토리를 가져온 다음 MKDIR [path]\@relpath마지막에 끝까지 디렉토리를 작성할 수 있습니다 .

마지막으로 두 번째 파일은 파일로만 작업 @isdir==FALSE하고 COPY 명령은 단순히 작업을 수행하고 FORFILES 명령으로 도달 한 모든 파일 [path]@relpath을 대상으로 설정 하여 방금 만든 디렉토리 내부에 파일을 복사합니다.

forfiles /s /c " cmd /c ( if @isdir==TRUE mkdir C:\test\@relpath ) && ( if @isdir==FALSE copy @file C:\test2\@relpath)"

그것이 주변의 모든 사람들을 돕는 희망입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.