각 파일에 대한 폴더를 작성하고 파일을 폴더로 이동하는 CMD 명령


10

디렉토리에 각 파일 (파일 이름을 기준으로)에 대한 폴더를 생성하기 위해 명령 줄에서 실행할 수있는 명령이 필요합니다. 그런 다음 파일을 새로 만든 폴더로 옮깁니다.

예 :

폴더 시작 :

Dog.jpg
Cat.jpg

다음 명령은 현재 작업 디렉토리에 각 파일 이름에 대한 폴더를 만드는 데 효과적입니다.

for %i in (*) do md "%~ni"

결과 폴더 :

\Dog\
\Cat\
Dog.jpg
Cat.jpg

한 단계 더 나아가 파일을 폴더로 이동해야합니다.

내가 달성하고자하는 것은 :

\Dog\Dog.jpg
\Cat\Cat.jpg

누군가이 모든 것을 수행하는 하나의 명령으로 나를 도울 수 있습니까?

답변:


10

두 번째 명령은

for %i in (*) do move "%i" "%~ni"

편집 : and31415의 의견에 따라 % i에 ""를 추가했습니다. tnx.


4
그로부터 나는 A)를 결합 할 수 있다고 말했을 것입니다 for %i in (*) do cmda && cmdb -B) 먼저 for %i in (*) do @ECHO cmda && cmdb C를 반향 할 수 있습니다.) 하위 디렉토리를 통과하는 / R이라고 생각할 수 있습니다.
barlop

2
파일 이름에 공백이 있으면이 명령이 작동하지 않습니다. 다음과 같은 것을 사용해야 for %i in (*) do move "%~i" "%~ni"합니다. 대상 폴더가 존재하지 않을 때 부작용이있을 수 있으므로 충분하지 않을 수도 있습니다 (예 : 파일이 "이동"되어 이름이 바.). 쉬운 해결책은 다음과 같이 두 명령을 결합하는 것입니다 for %i in (*) do md "%~ni" && move "%~i" "%~ni". 명령은 디렉토리가 이미 존재하지 않는다고 가정합니다.
and31415

2
당신이 사용하는 경우 또한, barlop의 코멘트를 확장 cmda && cmdb한 후 cmdb경우에만 실행됩니다 cmda성공적이었다. cmda & cmdb대신 사용 하면 두 번째 명령이 실행됩니다. 실제로, 단일 앰퍼샌드 ( &)는 명령 구분자이고 이중 앰퍼샌드 ( &&)는 조건부 입니다. errorlevel값을 설정하지 않은 명령 은 후자를 사용해서는 안됩니다.
and31415

5

다음 명령을 직렬로 실행하십시오.

각 파일의 폴더를 작성하려면 다음을 수행하십시오.

for %i in (*) do mkdir "%~ni"

각 파일을 해당 폴더로 이동하려면 :

for %i in (*) do move "%i" "%~ni"

1
슈퍼 유저에 오신 것을 환영합니다! 이것은 다른 답변을 복제하고 새로운 내용을 추가하지 않습니다. 실제로 새로운 내용이 없다면 답변을 올리지 마십시오.
DavidPostill

-1

예를 들어 years \ Filename.mp4와 같은 폴더가있는 경우이 작업을 수행합니다

1901\Filename.mp4 
1902\Filename.mp4
1903\Filename.mp4

모든 폴더의 1 단계 파일을 나열합니다. 모든 * .mp4 및 * .mkv는 파일 이름으로 2 단계 폴더를 만들고 1 단계 폴더의 동일한 이름 파일을 2 단계 폴더로 이동하고 연도 기본 폴더에서 실행합니다.

for /d %D in (*) do for %i in (%~fD\*.mp4,%~fD\*.mkv) do mkdir "%~dpi%~ni" && move "%~dpi%~ni.*" "%~dpi%~ni\"

첫 번째 수준의 YEARS 폴더가 없다면 첫 번째 단계를 무시하고 두 번째 단계를 실행하여 파일 이름 기본 폴더에서 실행하십시오.

for %i in (*.mp4,*.mkv) do mkdir "%~dpi%~ni" && move "%~dpi%~ni.*" "%~dpi%~ni\"

&&는 파일 이동을 실행하기 위해 이전 mkdir % ERRORLEVEL %이 0인지 확인합니다.

테스트하려면 다음을 사용하십시오.

for /d %D in (*) do for %i in (%~fD\*.mp4,%~fD\*.mkv) do echo "%~dpi%~ni" && echo "%~dpi%~ni.*" "%~dpi%~ni\"

왼쪽 파일 찾기 : (*)의 / d % D에 대한 (% ~ fD \ *)의 % i에 대한 에코 "% ~ dpi % ~ fi"를 에코하십시오
Olívio Moura

/ d % D의 경우 (*)에서 % i의 경우 (% ~ fD \ *)에서 "% ~ fi"를 이동하십시오. "D : \ TRASH \"
Olívio Moura
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.