xcopy 파일, 이름 바꾸기,“xxx는 파일 이름을 지정합니까…”메시지를 표시하지 않습니다.


404

이것은 매우 간단하고 아마도 적절한 플래그를 간과하고 있지만 한 명령에서 파일을 한 디렉토리에서 다른 디렉토리로 복사하고 대상 디렉토리에서 이름을 바꾸는 방법은 무엇입니까? 내 명령은 다음과 같습니다.

if exist "bin\development\whee.config.example"
  if not exist "TestConnectionExternal\bin\Debug\whee.config"
    xcopy "bin\development\whee.config.example"
          "TestConnectionExternal\bin\Debug\whee.config"

매번 다음과 같은 메시지가 나타납니다.

TestConnectionExternal \ bin \ Debug \ whee.config가 대상에 파일 이름 또는 디렉토리 이름을 지정합니까 (F = 파일, D = 디렉토리)?

이 프롬프트를 표시하지 않습니다. 대답은 항상 F입니다.


15
에코 f | xcopy ...
Cyclion


3
Miscrosoft : "왜 사용자에게 혼란을 줄 수있을 때 간단하게 만들 수 있습니까?". 이것은 그들이 리눅스 세계에서 행해지고있는 것을 복사해야 할 때입니다. cp파일 / 디렉토리를 복사 할 때 b ** t를 보지 마십시오!
fduff


BATCH 파일 에서 내 대답을 읽으면 프롬프트가 표시되는 시점과 배치 파일 OS 언어에 독립적으로 자동으로 응답하는 방법을 자세히 설명 하는 파일 또는 폴더를 요청하는 것이 좋습니다 .
Mofi

답변:


217

를 사용하지 마십시오 xcopy사용하는 copy대신,이 문제가되지 않습니다.

xcopy일반적으로 여러 파일 / 폴더의 재귀 복사본을 수행하거나 제공하는 확인 / 프롬프트 기능이 필요할 때 사용됩니다. 단일 파일 사본의 경우 copy명령이 제대로 작동합니다.


97
copy대상의 전체 디렉토리 구조가 아직 없으면 파일을 복사하지 않습니다. xcopy필요한 모든 디렉토리가 자동으로 생성됩니다.
BQ.

41
그건 놀라운 XCOPY이 누락이 있는지 확인합니다. 디렉토리 (/ I)와 같은 파일 옵션이있는 경우이 문제가 해결되고 xcopy는 복사를 대체 할 수 있습니다. 대신이 결함으로 인해 이러한 상황에 맞는 사본을 선택해야합니다.
rocketmonkeys

35
다른 사람들이 이미 지적했듯이 @Arnshea의 대답은 정답입니다. 이미있는 디렉토리 구조의) 영업의 특정한 상황이 질문에 언급되지 않았기 때문에이며, B)가 답을 찾고에 대한 여기에 올 것이다이 질문의 미래 독자 훨씬 더 가치가 xcopy그냥하고 copy.
Mike Nakis

17
@Amshea의 대답은 올바른 질문입니다. 질문은 xcopy에만 해당되며이 대답은 기본적으로 "xcopy를 사용하지 마십시오"입니다. 실제로 xcopy에 관한 질문에 전혀 대답하지 않습니까?
BrainSlugs83

9
대상의 경로 끝에 별표를 추가하기 만하면됩니다. 아래에서이 답변을보십시오. stackoverflow.com/a/26034267/1231
Donny V.

638

나는 사용한다

echo f | xcopy /f /y srcfile destfile

주위를 돌아 다니다.


17
@Arnshea-감사합니다! 자동 디렉토리 복사에 적합echo d | xcopy srcdirectory destdirectory /S
Dr. ABT

8
+1 @Arnshea 그것은 당신이 거기에서 정확히 무엇을하는지 이해하기 위해 시간이 걸렸으며 독일 창 설치 작업을하고 있기 때문에 echo d | xcopy ...나를 위해. 당신은 훌륭합니다
Thomas

23
그는 xcopy가 요청할 질문에 대한 사용자 응답을 시뮬레이션하고 있습니다.
존 문쉬

5
@Thomas이 기술을 사용하는 배치 파일을 다른 로케일에서 이식 할 수 없다는 것을 의미합니까?
Max Nanasy

17
@MaxNanasy 나는 이것이 로케일간에 이식 가능하지 않다는 것을 확인했다. 독일어 설정에서는 파일에 D를, 디렉토리에 V를 전달합니다. :(
Matt

177

다른 옵션은 대상 와일드 카드를 사용하는 것입니다. 소스 및 대상 파일 이름이 동일한 경우에만 작동하므로 OP의 특정 예를 해결하지는 않지만 공유 할 가치가 있다고 생각했습니다.

예를 들면 다음과 같습니다.

xcopy /y "bin\development\whee.config.example" "TestConnectionExternal\bin\Debug\*" 

파일 또는 디렉토리를 묻지 않고 대상 디렉토리에 "whee.config.example"파일의 사본을 작성합니다.

업데이트 : @chapluck이 언급 한 바와 같이 :

당신은 변경할 수 있습니다 "* ""[newFileName].*". 파일 확장자는 유지되지만 이름을 바꿀 수 있습니다. 또는 더 해키 : "[newFileName].[newExt]*"확장을 변경하려면


1
"에코 f |" 방법은 멋지지만 처음에 문제를 찾기 위해 종종 검색하는 추가 출력을 피합니다.
Richard Anthony Hein

6
@ Durden81-zippycoder가 지적했듯이 대답은 파일 이름을 바꾸지 않으므로 OP의 요구 사항입니다.
Polyfun

6
답변을 확장하려면 "*"를 "[newFileName]. *"로 변경하십시오. 파일 확장자는 유지되지만 이름을 바꿀 수 있습니다. 또는 더 이상 해키 : "[newFileName]. * [newExt]"확장명을 변경하십시오.
chapluck

감사! 업데이트 섹션은 확장자를 유지하고 파일이라고 가정하면서 파일 이름을 변경 해야하는 문제를 해결 한 것입니다. XCopy는 이것을 스위치로 가지고 있어야합니다.
Stanislav

1
끝에 별표없이 나를 위해 일했습니다. 역 슬래시.
tivnet

91

XCOPY에는 문서화되지 않은 기능이 있습니다. 당신이 사용할 수있는:

xcopy "bin \ development \ whee.config.example" "c : \ mybackup \ TestConnectionExternal \ bin \ Debug \ whee.config *"

나는 오늘 그것을 테스트했습니다. :-)


4
고마워요 대상 파일의 끝에 "*"를 추가했는데 효과가있었습니다 .. : :) +1 트릭
Rahul Patel

2
탁월한 솔루션-깨끗하고 우아하며 기존 xcopy 플래그와 호환되는 다른 명령을 사용하지 않고 완벽하게 작동합니다. 이것이 가장 많이 투표 된 답변이어야합니다.
Brian Swift

7
정답이 맞지 whee.config.example않기 때문에 명령이 whee.config*일치 하므로 대상 폴더 가 whee.config.example됩니다.
Meow

2
방금 파일을 만든 b.txtxt다음 명령을 실행 xcopy a.txt b.txt* /F /Y하고 파일 a.txtb.txt예상대로에 복사되었습니다 . 또한 /F /Y스위치 를 사용하는 동안 실제 사본이 예상대로 화면에 표시됩니다.
Dominique

1
@Meow : 아니요. 와일드 카드는 소스가 아닌 대상에 있기 때문입니다.
ienaxxx

74

http://technet.microsoft.com/en-us/library/bb491035.aspx 로 이동하십시오.

MAIN ISSUE는 "... 대상이 기존 디렉토리를 포함 하지 않고 백 슬래시로 끝나지 않는 경우입니다. ()로 다음 메시지가 나타납니다. ...

대상이 대상에서 파일 이름 또는 디렉토리 이름을 지정합니까 (F = 파일, D = 디렉토리)?

/ i 명령 줄 옵션을 사용하여이 메시지를 표시하지 않을 수 있습니다. 소스가 둘 이상의 파일 또는 디렉토리 인 경우 xcopy는 대상이 디렉토리라고 가정합니다.

시간이 좀 걸렸지 만 RTFM 만 있으면됩니다.


7
이것이 최고의 답변이어야합니다! 다른 사람들에게 정말 분명합니다. 한 위치에서 다른 위치로 하나의 파일을 복사하고 전체 디렉토리 구조를 작성하려면 다음 명령을 사용하십시오. xcopy / "C : \ Data \ Images \ 2013 \ 08 \ 12 \ 85e4a707-2672-481b-92fb -67ecff20c96b.jpg ""C : \ 대상 데이터 \\ Images \ 2013 \ 08 \ 12 \ 85e4a707-2672-481b-92fb-67ecff20c96b.jpg \ ". 예, 파일 이름 끝에 백 슬래시를 넣으십시오!
adudley

4
좋은 대답이지만 문제를 해결하지는 못합니다. xcopy hello.txt hello2 \ 시도했습니다. 프롬프트가 없습니다. 이제 xcopy hello.txt hello3 (백 슬래시없이)을 시도하십시오. dest가 파일인지 dir인지 묻습니다. 스크립트에서 F 또는 D를 가정하도록 지시하는 방법이 필요합니다.
RuntimeException

27
이것은 매우 이상한 답변입니다. 특히 공감 율, 도움이되지 않는 "RTFM"스 내크 및 "인기"답변을 내려 놓은 주석 때문에 ... 원래 질문을 다루지 않기 때문에! 원래 질문은 "한 디렉토리에서 다른 디렉토리로 파일을 복사하고 대상 디렉토리에서 IT 이름을 바꾸십시오"라고 명확하게 말했습니다. 위에서 주어진 시도는 대상 파일 이름이 소스 파일 인 SAME 이름 인 파일을 복사하는 다른 경우를 해결하기 위해 나타납니다. @Arnshea가 제공 한 "지저분한"해결 방법은 여기에서 볼 수있는 유일한 단일 단계 답변입니다.
M.Bearden 1

3
Bearden은 매우 예의 바르지 만 투표 수를 감안할 때이 답변에 대한 문제를 명시 적으로 나열해야한다고 생각합니다 .1) OP 문제에 대한 해결책을 제시하는 1 단락 (4/5), 않습니다 하지 영업 이익은 복사하기 때문에, 작동 및 이름 바꾸기 파일 , 하지 디렉토리를; 2) 답변 맨 위에 제공된 링크 는 해결책을 제공 하지 않습니다 . 3) 주요 문제에 대한 진술은 OP의 질문에 적용 되지 않습니다 . 그리고 4) 대답은 모욕적이며, 두 번째 단락에서 소리를 지르고 마지막은 모욕한다. 아마도 그는 The Question을 다시 읽었을 것입니다.
GlennFromIowa

2
여기에 주어진 모든 대답이 가능하고 문서화하는 파일 대상에 복사하지, 디렉토리에 복사하는, zippycoder, chapluck, LBushkin에서 다른 답변을 참조
pdem

27

따라서 이에 대한 간단한 수정이 있습니다. 분명히 어색하지만 작동합니다. 새 파일 (파일 이름)이 이미 존재하면 xcopy는 대상이 디렉토리인지 파일인지 묻지 않습니다. xcopy 명령 앞에 새 파일 이름에 대한 간단한 에코를 표시하면 빈 파일을 덮어 씁니다. 예

echo.>newfile.txt
xcopy oldfile.txt newfile.txt /Y

6

이것은 Bills의 답변입니다.

다른 사람들에게 정말 분명합니다.

당신이 복사하는 경우 ONE 한 장소에서 다른 장소로 파일 사용자가 전체 디렉토리 구조를 생성하려면, 다음 명령을 사용합니다 :

xcopy "C:\Data\Images\2013\08\12\85e4a707-2672-481b-92fb-67ecff20c96b.jpg" "C:\Target Data\\Images\2013\08\12\85e4a707-2672-481b-92fb-67ecff20c96b.jpg\" 

예, 파일 이름 끝에 백 슬래시를 넣으면 파일 또는 디렉토리인지 묻지 않습니다. 소스에는 하나의 파일 만 있기 때문에 파일이라고 가정합니다.


12
이것은 잘못이다. "xcopy versionBase.txt asd \ versionBase.txt \"를 실행할 때 asd 디렉토리가 없으면 asd \ versionBase.txt \ versionBase.txt 파일을 얻습니다.
Cristian Niculescu

1
이 페이지의 다른 답변과 마찬가지로이 게시물은 원래 질문을 다루지 않습니다. 문제는 파일을 한 단계로 복사하고 이름을 바꾸는 방법이었습니다. 다른 혼란스러운 답변과 마찬가지로 이름을 바꾸지 않고 파일을 복사하는 방법에 대해 설명합니다.
M.Bearden

폴더가 아닌 해당 이름 으로 디렉토리 를 생성한다는 사실은 말할 것도 없습니다. 그것을 테스트하고 나중에 dir을 실행하면 다음과 같이 보일 것입니다. dir "C:\Target Data\\Images\2013\08\12" 09/25/2015 10:48 AM <DIR> 85e4a707-2672-481b-92fb-67ecff20c96b.jpg
GlennFromIowa

3

xcopy src dest /I

REM This assumes dest is a folder and will create it, if it doesnt exists


2

비슷한 문제가 있었고 주석을 억제하고 다른 대상 파일 이름을 사용하고 싶었으므로 robocopy와 xcopy가 모두 도움이되지 않았습니다. 나는 찾았다

type filename.txt > destfolder\destfilename.txt

내 요구 사항에 따라 작업.


2

원래 질문으로 돌아 가기 :

 xcopy "bin\development\whee.config.example" "TestConnectionExternal\bin\Debug\whee.config"

두 가지 명령으로 수행 할 수 있습니다.

mkdir "c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\.."
xcopy "bin\development\whee.config.example" "c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\"

대상 파일의 경로에 "\ .."를 추가하면 대상 디렉토리가 아직없는 경우 작성됩니다. 이 경우

"c:\mybackup\TestConnectionExternal\bin\Debug\"

존재하지 않는 디렉토리의 상위 디렉토리입니다.

"c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\.."

적어도 WIN7의 경우 mkdir 은 디렉토리를 신경 쓰지 않습니다.

"c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\"

정말 존재합니다.


디렉토리가 존재하지 않으면 흥미로운 수정입니다. 불행히도, 내 테스트에서 다음 줄은 여전히 ​​사용자에게 프롬프트합니다.
GlennFromIowa

당신은 바로 xcopy "bin \ development \ whee.config.example" "c : \ mybackup \ TestConnectionExternal \ bin \ Debug \ whee.config \"이어야합니다. 나는 aproach를 사용하여 존재하지 않는 dirotory에 파일을 복사했습니다. 이름을 바꾸려면 끝에 백 슬래시를 추가해야합니다.
grenix

2

대상의 존재 여부에 관계없이 파일을 복사하기 위해 대상의 끝에 *가있는 XCOPY 대상의 존재 여부에 관계없이 폴더와 내용을 복사하는 대상의 끝에 \가있는 XCOPY

대안 적으로

파일 용 RoboForm 소스 목적지 파일 폴더 용 RoboForm 소스 목적지


1

또는 robocopy대신에 제안 합니다 . 클라이언트 또는 서버에서 GUI로 또는 명령으로 사용됩니다. 네트워크 일시 정지 허용 및 파일 속성 별 복사시 파일 속성을 무시하도록 선택할 수 있습니다. 그리고 멀티 코어 머신을 지원하기 때문에 파일이 순차적이 아니라 서로 "병렬"로 훨씬 빠르게 복사됩니다. MS TechNet에서 찾을 수 있습니다.copyxcopyrobocopy


2
나는 항상 robocopy를 사용합니다. 그러나이 포스터의 질문에 대해서는 파일 이름을 바꿀 수 없으므로 작동하지 않습니다. 오늘 전에 알지 못했던 것은 xcopy 에 / z 스위치가있어 네트워크 일시 정지에 견딜 수 있다는 것입니다!
GlennFromIowa

1

파일 만 복사하고 대상에서 파일 이름을 변경하려면 다음을 수행하십시오.

xcopy / f / y "bin \ development \ example.exe" "TestConnectionExternal \ bin \ Debug \ NewName.exe *"

그리고 그것은 잘 작동합니다


1

큰 파일을 복제하려면 / J 스위치를 사용하는 xopy를 사용하는 것이 좋습니다. 이 경우 파일의 경우 F를, 디렉토리의 경우 D를 파이프하면됩니다. 또한 나중에 참조 할 수 있도록 작업을 어레이에 저장할 수 있습니다. 예를 들면 다음과 같습니다.

$MyScriptBlock = {
    Param ($SOURCE, $DESTINATION) 
    'F' | XCOPY $SOURCE $DESTINATION /J/Y 
    #DESTINATION IS FILE, COPY WITHOUT PROMPT IN DIRECT BUFFER MODE
}
JOBS +=START-JOB -SCRIPTBLOCK $MyScriptBlock -ARGUMENTLIST $SOURCE,$DESTIBNATION
$JOBS | WAIT-JOB | REMOVE-JOB

약간 수정 된 Chand에게 감사합니다 : https://stackoverflow.com/users/3705330/chand


0

파일을 복사 할 때 xcopy 대신 복사를 사용하십시오.

예 : "bin \ development \ whee.config.example" "TestConnectionExternal \ bin \ Debug \ whee.config"복사


1
다른 이름을 가진 동일한 폴더에 파일을 복사하려고하는데 xcopy가 작동하지 않습니다. copy /Y source destination덮어 쓰기 확인을 통과하는 데 사용 합니다.
SandRock

0

실제로 파일 이름을 변경하지 않기 때문에 대상에서 파일 이름을 가져올 수 있으며 질문이 없습니다.

xcopy bin\development\whee.config.example TestConnectionExternal\bin\Debug\  /Y

이 방법은 대상 디렉토리가 존재하고 소스가 파일 또는 디렉토리 일 수있는 경우에 효과적입니다.


1
@ downvoters :이 답변이 다운 보트 된 이유는 무엇입니까? 이러한 맥락에서, Debug디렉토리는 아마도 존재하는 것으로 보장됩니다.
Jirka Hanika

4
이 응답은 "실제로 파일 이름을 변경하지 않기 때문에"이라고 말하지만 원래 질문은 "한 디렉토리에서 다른 디렉토리로 파일을 복사하고 대상 디렉토리에서 IT 이름을 바꾸십시오"라고 명확하게 대답했습니다. 따라서 이것은 주제와 관련이없는 것 같습니다.
M.Bearden 1

0

해결 방법, ReName ...을 사용하고 이름을 Cryptic Name으로 지정한 다음 적절한 이름으로 이름을 바꿉니다.

씨:

CD "C : \ Users \ Public \ Documents \ My Web Sites \ AngelFire ~ Zoe \"

XCopy / D / I / V / Y "C : \ Users \ Public \ Documents \ My Web Sites \ HostGator ~ ZoeBeans \ cop.htm"

Ren "cop.htm" "christ-our-passover.htm"


0

xcopy를 사용하면 단일 파일을 지정된 폴더에 복사하여 대상 이름을 정의 할 수 없습니다. 대상 이름이 필요한 경우 복사하기 전에 이름을 바꾸십시오.

ren "bin \ development \ whee.config.example"whee.config

xcopy / R / Y "bin \ development \ whee.config" "TestConnectionExternal \ bin \ Debug \"


이것이 OP 환경의 코드를 복제하기 위해 특정 환경 (예 : 소스 폴더에 whee.config가없는 것)에서 작동한다고 가정하면 원래 이름으로 다시 이름을 바꾸지 않아야합니까? ren "bin\development\whee.config" whee.config.example
GlennFromIowa

0

대상 경로 끝에 별표 (*)를 붙여 D와 F의 분쟁을 건너 뜁니다.

예:

xcopy "compressedOutput.xml" "../../Execute Scripts / APIAutomation / Libraries / rerunlastfailedbuild.xml *" "


0

xxxxxxxxxxxx가 대상에 파일 이름 또는 디렉토리 이름을 지정합니까?

(F = file, D = directory)? D

if a File : (echo F)
if a Directory (echo D)

0

파일이 대상에 존재하지 않거나 (새 이름으로) 존재하지만 더 오래된 경우에만 새 이름으로 파일을 복사하려고 할 때도 같은 문제가 발생했습니다. 해결책은 *대상 파일 이름 끝에 char 을 추가하는 것입니다 . 예:

xcopy "C:\src\whee.config.txt" "C:\dest\bee.config.txt*" /D /Y

그것은 매력처럼 작동합니다
E.Big

-2

항상 파일임을 지정할 수 없습니다. xcopy의 다른 기능이 필요하지 않다면 왜 regular copy?


5
한 가지 이유는 것입니다 copy내부 명령 인, ErrorLevel에를 설정하지 않습니다. 복사 오류가 발생하는 경우 배치 파일 경로에 영향을 주려면을 사용해야 XCOPY합니다.
rossmcm

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