폴더의 내용을 한 수준 위로 일괄 이동


5

어떤 경우에는 간단한 작업이지만 수백 개의 폴더 안에 수천 개의 파일을 가지고 있습니다.

디렉토리 구조는 다음과 같습니다.

C:\Photos\subject\randomnumbers\images\file.ext

끝내고 싶습니다.

C:\Photos\subject\randomnumbers\file.ext

실행을 시도 for /r %i in ("*\images\*.*") do move *\*.*했지만 예상대로 작동하지 않습니다.

나는 이것을 수동으로하는 것 외의 다른 방법을 생각할 수 없다. 수동으로 작업하는 것이 효과적 일 수 있지만 필요에 따라 시작할 수있는 자동화 된 작업으로 많은 이점을 얻을 수 있습니다.

가능하며 아무도 이걸 도와 줄 수 없나요?


1
당신은 이미지 파일의 수천 당신이 그들을 관리 할 경우, 어쩌면 당신은 학습에 시간을 투자해야 exiftool 당신은 얻을 것이다 ... 당신이 원하는 가능성 더. 많은 수의 파일에 적용하기 전에 사본을 안전하게 테스트하여 테스트하십시오.
techraf

@techraf 와우, exftool은 문서에서 빠른 검색에서 판단하면 정말 강력합니다! 감사합니다.
HASJ

답변:


4

이것은 당신을 위해 일해야합니다 :

for /r %i in ("images\*.*") do move %i %~pi..
  • %~pi경로를 추출합니다 %i(로 끝남 \).
  • .. 위의 경로 다음에 배치되면 부모 디렉토리를 가리 킵니다.

물론 하위 디렉토리에 충돌하는 이름을 가진 파일이있는 상황을 처리하지 못합니다.


훌륭한! 예상대로 정확하게 작동합니다! %i내가 원래 명령에서 잊어 버린 것을 믿을 수 없다 . 나는 또한 사용을 생각하지 않을 것이다 ..! 답장을 보내 주신 모든 분들께 감사드립니다. 이 답변들이 다른 사람들과 비슷하거나 다른 질문에 도움이되기를 바랍니다.
HASJ

2

이것은 매우 정교하지 않으며, 사람들이 더 나은 해결책을 제시 할 것이라고 확신하지만, 여기에 빠른 대답이 있습니다.

  1. *물건을 옮길 폴더에서부터 간단한 (탐색기) 검색 을하십시오. 완료하는 데 30 분 정도 걸릴 수 있습니다.
  2. 경로별로 결과 정렬
  3. 대상 폴더에 아직없는 모든 파일 (이동하려는 항목)을 선택하십시오 (기존의 '수천 개의 디렉토리'가 될 것입니다. 정렬 후에 모두 함께 사용되므로 '클릭'및 '이동 + 그것을 클릭하십시오.
  4. 왼쪽의 폴더 구조 트리로 끌어서 대상 폴더에 놓습니다.
  5. 움직이는 동안 커피를 마시거나 다른 일을하십시오. Windows는 일반적으로 하드웨어에 따라 초당 40-7000 개의 파일을 이동할 수 있습니다.
  6. 모든 - now empty - 디렉토리를 선택하고 삭제하십시오.

특정 파일 형식 만 원하면 필터로 1 단계를 수행 할 수도 있습니다 *.jpg,*.png.


2

폴더의 내용을 한 수준 위로 일괄 이동

다음은 MoveFromDir 이 이동할 내용의 시작 디렉토리이며 MoveToDir 은 MoveFromDir에서 해당 내용을 한 수준 위로 이동하는 디렉토리 명시 경로입니다. 따라서이 항목을 설정해야합니다 따라서 변수.

MoveFromDir 및 그 아래의 모든 폴더 및 파일을 MoveToDir로 이동하십시오.

두 번째 FOR 루프 만 실행하는 것에 유의하십시오.

  • FOR /F "TOKENS=*" %%A IN ('DIR /S /B "%MoveFromDir%\*.jpg"')

MoveToDir (예 : jpg)로 이동할 파일 확장자 만 지정할 수 있습니다.

@ECHO ON

SET MoveToDir=C:\Photos\subject\randomnumbers
SET MoveFromDir=C:\Photos\subject\randomnumbers\images

:: Move the folders from the move directory to the move to directory
FOR /D %%A IN ("%MoveFromDir%\*") DO MOVE /Y "%%~A" "%MoveToDir%"

:: Move any remaining files (or folders) from the move directory to the move to directory
FOR /F "TOKENS=*" %%A IN ('DIR /S /B "%MoveFromDir%\*.*"') DO MOVE /Y "%%~A" "%MoveToDir%\"
GOTO EOF

추가 리소스

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