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

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

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

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

끝내고 싶습니다.

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

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

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

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



답변

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

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

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


답변

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

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

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


답변

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

다음은 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

추가 리소스


답변