SharedIT | 묻고 답하기(AMP)

CMD명령어 고수님 답변 부탁드립니다.. (하위디렉토리 파일만 이동)

d:\test 하위폴더에 있는 모든 파일들만(디렉토리 제외)
d:\test\total 로 이동이나 복사할수 있는 명령어가 있나요?

아무리 찾아봐도 디렉토리 통째로 복사가됩니다 ㅠ
고수님들 답변 좀 부탁드립니다.


 
Tags : 태그가 없습니다.

5개의 답변이 있습니다.

안되면되게하자
  0 추천 | 5년 이상 전
테스트 결과 첨부 합니다.
D:\test>dir
 D 드라이브의 볼륨: Recovery Image
 볼륨 일련 번호: DA1C-D8C8

 D:\test 디렉터리

2018-10-05  오후 03:55    <DIR>          .
2018-10-05  오후 03:55    <DIR>          ..
2018-10-05  오후 03:55                 0 file - 복사본.txt
2018-10-05  오후 03:55                 0 file.txt
2018-10-05  오후 03:55                 0 file1 - 복사본.txt
2018-10-05  오후 03:55                 0 file1.txt
2018-10-05  오후 04:01    <DIR>          total
2018-10-05  오후 03:55    <DIR>          폴더
               4개 파일                   0 바이트
               4개 디렉터리   1,354,866,688 바이트 남음

D:\test>dir total
 D 드라이브의 볼륨: Recovery Image
 볼륨 일련 번호: DA1C-D8C8

 D:\test\total 디렉터리

2018-10-05  오후 04:01    <DIR>          .
2018-10-05  오후 04:01    <DIR>          ..
               0개 파일                   0 바이트
               2개 디렉터리   1,354,866,688 바이트 남음

D:\test>for /r %i in (*.*) do xcopy /y "%i" d:\test\total\

D:\test>xcopy /y "D:\test\file - 복사본.txt" d:\test\total\
D:\test\file - 복사본.txt
1개 파일이 복사되었습니다.

D:\test>xcopy /y "D:\test\file.txt" d:\test\total\
D:\test\file.txt
1개 파일이 복사되었습니다.

D:\test>xcopy /y "D:\test\file1 - 복사본.txt" d:\test\total\
D:\test\file1 - 복사본.txt
1개 파일이 복사되었습니다.

D:\test>xcopy /y "D:\test\file1.txt" d:\test\total\
D:\test\file1.txt
1개 파일이 복사되었습니다.

D:\test>xcopy /y "D:\test\total\file - 복사본.txt" d:\test\total\
D:\test\total\file - 복사본.txt
같은 파일로 복사할 수 없습니다.
0개 파일이 복사되었습니다.

D:\test>xcopy /y "D:\test\total\file.txt" d:\test\total\
D:\test\total\file.txt
같은 파일로 복사할 수 없습니다.
0개 파일이 복사되었습니다.

D:\test>xcopy /y "D:\test\total\file1 - 복사본.txt" d:\test\total\
D:\test\total\file1 - 복사본.txt
같은 파일로 복사할 수 없습니다.
0개 파일이 복사되었습니다.

D:\test>xcopy /y "D:\test\total\file1.txt" d:\test\total\
D:\test\total\file1.txt
같은 파일로 복사할 수 없습니다.
0개 파일이 복사되었습니다.

D:\test>dir total
 D 드라이브의 볼륨: Recovery Image
 볼륨 일련 번호: DA1C-D8C8

 D:\test\total 디렉터리

2018-10-05  오후 04:01    <DIR>          .
2018-10-05  오후 04:01    <DIR>          ..
2018-10-05  오후 03:55                 0 file - 복사본.txt
2018-10-05  오후 03:55                 0 file.txt
2018-10-05  오후 03:55                 0 file1 - 복사본.txt
2018-10-05  오후 03:55                 0 file1.txt
               4개 파일                   0 바이트
               2개 디렉터리   1,354,866,688 바이트 남음

D:\test>

wansoo | 5년 이상 전

test 폴더 아래에 하위 폴더들이 쭉~ 있고, 그 하위 폴더들에 파일이 많이 있을때 그 파일들을 total 폴더에 디렉토리는 제거하고 파일들만 total 폴더 안에 넣고 싶다는 질문이였을 겁니다. 한군데 모을 폴더인 total을 test가 아닌 다른 폴더에다 두고 실행한다면 깔끔하게 될것 같은데... 다른 폴더에서 복사해서 total 폴더에 복사해둔 file들을 다시 total folder 안에 들어가서 수행하려 하기 때문에 같은 파일을 복사할 수 없다는 오류가 발생되게 되어 조금 깔끔하지 못한 결과가 나오긴 하죠~ 여기서 xcopy 대신에 copy 명령을 사용해도 동일한 결과를 얻을 수 있겠고요~ 직접 실습해 보시고~ ㅎㅎㅎ 수고하셨습니다~ ^^
안되면되게하자
  0 추천 | 5년 이상 전
wansoo 님 답변 테스트 결과 오타가 발견되어 정정합니다.
"%i% --> "%i"

for /r %i in (*.*) do xcopy /y "%i" d:\test\total\

테스트 결과 잘 작동합니다.
wansoo 님 소중한 정보 감사합니다.

※ 답변에  Reply 달았더니 줄바꿈이 잘 안되어 삭제 하고 답변으로 남깁니다.

wansoo | 5년 이상 전

오타가 있었네요~ ^^ "가 왜 %로 바뀌어 입력되었는지... ㅎㅎㅎ

wansoo | 5년 이상 전

복사하려는 file명에 빈칸이 없다면 for /r %i in (*.*) do copy /y %i d:\test\total\ 라고 적어 줘도 작동되고요. 긴파일명의 중간에 빈칸이 들어 갔을때 ""를 적어 주지 않으면 처리하지 못하는 오류가 생기게 되고요. 이 명령을 배치 파일내에서 사용한다면 %i 대신에 %%i를 적어 줘야 제대로 작동하고요~ ^^

wansoo | 5년 이상 전

응용으로 모든 파일을 복사해서 모으지 않고 mp3 노래 파일만 모으고 싶다면 for /r %%i in (*.mp3) do copy /y "%%i" d:\test\total\ 라고 사용하면 되겠죠~
wansoo
  0 추천 | 5년 이상 전
질문에 맞게 다시 명령을 적어 보면

d:
cd \test
for /r %i in (*.*) do xcopy /y "%i% d:\test\total\
과 같이 명령을 주면 될거 같네요.
wansoo
  0 추천 | 5년 이상 전
복사하려는 디렉토리로 이동한 후에...

하위의 모든 file들을 d:\abc\로 복사하려한다면

for /r %i in (*.*) do xcopy /y "%i% d:\abc\

라고 명령 프롬프트에서 명령을 주면 될 것 같네요.

for /r 명령은 하위 디렉토리를 탐색하면서 *.* file들을 하나씩 do 뒤에 명령을 수행 시켜 줍니다.
danis78
  0 추천 | 5년 이상 전 | 제이컴즈 | 010-2871-8756
디렉토리만 제외하고 파일 복사는 copy 명령어로 될텐데요??

danis78 | 5년 이상 전

본문에 나온 예시대로 명령어를 치면 아래와 같습니다. copy d:\test\*.* d:\test\total\