DOS의 디렉토리에 파일을 복사하고 필요한 경우 디렉토리를 만드는 방법은 무엇입니까?


37

DOS 명령을 사용하여 아직 존재하지 않는 디렉토리 구조로 파일을 어떻게 복사 할 수 있습니까? 해당 위치가없는 경우 대상 파일 위치에 대한 디렉토리 경로 작성을 강제 할 수 있어야합니다.

예를 들어이 위치에 이미 file.txt가 있습니다.

C:\file.txt

그리고 그것을 복사하고 싶습니다

C:\example\new\path\to\copy\of\file\file.txt

하지만 지금은

C:\example\

모든 하위 디렉토리가 존재하거나 존재하지 않을 수 있습니다.

기본적으로, "필요한 경우 복사 및 대상 경로 작성"명령을 찾고 있습니다. 이것을 달성하는 가장 좋은 방법은 무엇을 추천 하시겠습니까?


이 질문은 실제로 DOS (또는 MS-DOS)에 관한 것인지 아니면 NT 기반 Windows 버전 (2000, XP, Vista, 7, 8, Server)에있는 명령 줄에 관한 것입니까?

DOS와 같은 Windows CLI를 의미했습니다. 게시물 제목에 "DOS와 유사한 Windows CLI"를 설명하는 가장 좋은 방법은 무엇입니까?
nodmonkey

일반적으로 Windows command linetitle / body에서 태그 명령 줄 과 함께 사용합니다 ( cmd.execommand-line 의 태그 동의어입니다 ). ms-dos 태그를 제거해야합니다. 태그 dos 는 어떤 상황에서도 사용해서는 안됩니다.

그러나이 경우 기존 / 허용 된 답변이 DOS / MS-DOS 용인 경우 그대로 두어도됩니다. 나중에 참조 할 수 있도록 DOS는 운영 체제로 해석해야합니다. Windows 명령 줄은이 명령을 기반으로하지만 눈에 띄는 차이점이 있습니다.

당신은 그것을 cmd 프롬프트라고 부를 수 있습니다
barlop

답변:


28

네, xcopy 입니다. 그 모습은 다음과 같습니다.

xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt

의 XCOPY 정보

XP 리소스 키트 및 Vista, Windows 7 및 Server 2008의 표준에서 ROBOCOPY 를 살펴볼 수도 있습니다 .

robocopy . c:\example\new\path\to\copy\of\file file.txt

3
파일 이름을 바꿀 필요가 없으면 xcopy가 좋습니다. 그렇게하면 불행히도 xcopy는 대상이 디렉토리인지 파일 이름인지 묻고 "파일"을 지정하는 명령 줄 스위치가 없습니다.
RomanSt

4
다른 답변을 참조하십시오 echo f | -xcopy와 함께 앞의 것을 사용 하여이 프롬프트에 자동으로 응답하십시오.
mcw0933

대상 경로의 끝에 슬래시 문자``가 있어야합니다. 그렇지 않으면 명령은 대상이 dir인지 아니면 파일이 없는지 묻는 메시지를 표시합니다.
Lii

17

나는 다음과 같은 것을 사용하려고 시도했다.

xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt

그러나 파일인지 디렉토리인지 묻습니다. 40000 파일이있는 배치 파일에 있었기 때문에 비실용적입니다. 이 솔루션은 부분적으로 만 내 문제를 해결합니다. 디렉토리 구조를 만들지 만 사용자 상호 작용이 필요합니다. 내 문제에 대한 해결책을 여기서 찾았습니다.

https://stackoverflow.com/questions/4283312/batch-file-asks-for-file-or-folder

기본적으로 대상 파일의 끝에 "*"를 추가하는 것입니다.

xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt*

편집 : @romkyns가 지적한 것처럼 이름이 같은 파일과 다른 파일 (예 : 'file.txt.bak')이 있으면 원하지 않는 결과가 발생할 수 있습니다. 위에 게시 된 동일한 스레드에서 작동하는 또 다른 솔루션은 "echo f"를 명령에 파이프하는 것입니다.

echo f | xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt

다른 언어로 파일을 사용하는 경우 시스템에서 파일에 사용하는 문자를 "f"로 대체해야합니다.


1
file.txt.bak물론 디렉토리에 없는 경우에만 작동합니다 . 여전히 일부 시나리오에서는 작동 할 수 있습니다.
RomanSt

@romkyns 사실입니다. 이 글을 게시 한 지 몇 달이 지난 후에도 같은 문제에 직면하여 "에코 f"솔루션을 사용했는데 효과가 좋았습니다. 내 답변 편집 ...
msb

1
를 사용 echo f | 하면 더 이상 후행이 필요하지 않습니다 *.
mcw0933

1
두 번째 파일 이름은 동일한 경우 중복됩니다. "xcopy file.txt c : \ example \ new \ path \ to \ copy \ of \ file \"은 디렉토리에 슬래시가있는 한 작동합니다 (그렇지 않으면 파일 또는 디렉토리가 의미하는지 묻습니다). .
FourtyTwo

3

DOS, 와우! 어쨌든 XCOPY 명령 을 사용합니다 .


1
4 년 지속 : yup. DOS는 PowerShell이 ​​존재하더라도 여전히 그것을 사용합니다.
Mr AH

0

사용 여부 copy또는 xCopy에서 오류 방지하기 위해, copy또는에서 프롬프트 xCopy필요한 폴더의 존재에 대한 테스트를하고 필요한 경우를 만듭니다

if not exist "NewPath" MkDir "NewPath"
copy "[path\]file.ext" "NewPath[\NewFileName.ext]"

또는 &&하나의 명령 줄 에서 명령을 결합하십시오 .

if not exist "NewPath" MkDir "NewPath" && copy "[path\]file.ext" "NewPath[\NewFileName.ext]"

move대신 동일한 작업을 수행 할 수 있습니다 copy. 나는에서이 기술에 대해 알게 StackOverflow의의 대답 으로 작업을 수행하는 방법에 대한 move.

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