어떤 경우에는 간단한 작업이지만 수백 개의 폴더 안에 수천 개의 파일을 가지고 있습니다.
디렉토리 구조는 다음과 같습니다.
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
(로 끝남\
)...
위의 경로 다음에 배치되면 부모 디렉토리를 가리 킵니다.
물론 하위 디렉토리에 충돌하는 이름을 가진 파일이있는 상황을 처리하지 못합니다.
답변
이것은 매우 정교하지 않으며, 사람들이 더 나은 해결책을 제시 할 것이라고 확신하지만, 여기에 빠른 대답이 있습니다.
*
물건을 옮길 폴더에서부터 간단한 (탐색기) 검색 을하십시오. 완료하는 데 30 분 정도 걸릴 수 있습니다.- 경로별로 결과 정렬
- 대상 폴더에 아직없는 모든 파일 (이동하려는 항목)을 선택하십시오 (기존의 ‘수천 개의 디렉토리’가 될 것입니다. 정렬 후에 모두 함께 사용되므로 ‘클릭’및 ‘이동 + 그것을 클릭하십시오.
- 왼쪽의 폴더 구조 트리로 끌어서 대상 폴더에 놓습니다.
- 움직이는 동안 커피를 마시거나 다른 일을하십시오. Windows는 일반적으로 하드웨어에 따라 초당 40-7000 개의 파일을 이동할 수 있습니다.
- 모든 – 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