트리의 모든 파일을 트리의 루트로 어떻게 이동합니까?


10

하위 폴더 B, C, D, E가 많은 폴더 (A라고합시다)에 하위 폴더 B1, B2, B3, ... C1, C2, C3이 있습니다 ...

cmd를 사용하여 모든 하위 폴더의 모든 파일을 "루트"폴더 A로 옮기려면 어떻게해야합니까?


하위 폴더가 아닌 하나의 루트에있는 모든 파일을 원한다고 가정합니다. A \ File1, A \ File2, A \ Folder2 \ File1이 아닌?
Canadian Luke

@Luke-예, 알겠습니다. 폴더와 하위 폴더에 존재하는 모든 파일이 루트로 이동되었습니다.
Rook

답변:


12

내 원래 게시물은 이동 명령에 파일 확장자를 포함하지 않았습니다. %~ni기본 이름 만 반환하므로 %~nxi파일 이름과 확장자를 모두 얻는 데 사용해야 합니다! 내 계정에서 파일 이름을 엉망으로 만들지 않았기를 바랍니다! (

명령 프롬프트에서 :

cd /d C:\Path\To\A
for /r %i in (*) do @move "%i" "%~nxi"

나중에 빈 폴더를 정리해야하는 경우 :

for /d %i in (*) do @rd /s /q "%i"

이제 파일 이름 충돌이 발생하면 스스로 해결 한 것입니다. 덮어 쓰기를 강제 하기 위해 명령에 /y매개 변수를 추가 할 수 있습니다 move( "%i"). 다른 것을 원한다면 모든 것을 자동으로 바꿀 수있는 다른 프로그램이 필요합니다.

배치 파일이 사용하려는 경우 또한, 모든 변경 %%%.


몰랐어요 FOR /r-좋아요!
Daniel Beck

와우 나는 당신의 명령에 인사합니다.
Mokubai

2

폴더를 작성하고 다른 모든 폴더를 폴더에 복사 한 후 해당 폴더를 마우스 오른쪽 단추로 클릭하고 검색을 선택하십시오 . 검색 상자에을 입력하십시오 *.*.

모든 파일과 폴더가 나열됩니다. 루트 디렉토리에서 원하는 모든 파일을 선택하고 잘라내십시오. 루트 디렉토리로 이동하여 모든 파일을 붙여 넣습니다.


내 cmd에 검색이 명령으로 존재하지 않습니다.
Rook

Richard는 명령에 대해 이야기하지 않았습니다. 명확하게하기 위해 그의 답변을 편집했습니다.
아이작 라 비노 비치

0

Cygwin (또는 Windows 용 다른 Unix 환경)을 설치하고 다음을 실행하십시오.

cd A
find . -type f -exec mv {} . \;

귀하 mvfind변형 에 따라 find . -type f -exec mv -t . {} \;대신 사용해야 할 수도 있습니다 .
Daniel Beck

1
많은 유닉스 도구의 기본 Windows 포트의 경우 unxutils.sourceforge.net
Dennis

@Dennis UnxUtils는 지금까지도 아주 오래되었습니다. 현재 사용중인 경우 내 게시물이 그들과 함께 작동하는지 확인할 수 있습니까? mkdir -p a/a1 a/a2 a/a3 b/b1 b/b2 b/b3 c그리고 touch a/a1/foo a/a1/bar a/a2/baz a/a3/qux b/b1/quux b/b2/quuux b/b3/quuuux c/ccc준비를 위해.
Daniel Beck

-1 사실 일 수도 있지만 cmd에서 어떻게해야하는지 묻고있었습니다.
Rook

@Daniel 의심 할 여지없이 그들이 오래되었다고 생각합니다. 방금 시도했는데 find . -type f -exec mv {} . ;정상적으로 작동하는 것 같습니다.
Dennis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.