날짜 폴더 만들어 이미지 복사하기

반응형

날짜 폴더를 만들어 이미지 복사하기

 

확인을 해본결과 스크립트가 느리다는 단점이 있었습니다.

일반적인 복사, 프로그램 복사, 로보카피 복사등을 비교 해봤을때

시간이 너무 많이 걸리네요. 파일 확장자를 하나하나 대입하여 복사

파일이 중복인지 하나하나 대입하여 번호를 붙여 파일명 추가

등등이 스크립트를 느려지게 만드는 요인이 아닌가 합니다.

아쉽네요. -_- 기능적으로는 좋은데 너무 느려서 문제가 됩니다.

토탈커맨더에서 써 먹을려고 만들었는데 아쉽지만 코드를 확인해봐야될듯합니다.

 

 

img_move.cmd [소스 폴더] [대상 폴더]

 

보기: img_move.cmd c:photos_folder d:task_folder


폴더안에 똑같은 파일이 있다면 파일명 끝에 _1 를 붙이며 (예: 20210315_103213_1.jpg)번호를
증가하여 파일 중복을 피합니다. 최상단 폴더명은 image로 시작되며 중복될경우 (예: image1)이
라는 폴더를 만들며 image 폴더 밑에는 이미지파일의 수정 날짜 (예: 2019-01-07) 로 폴더명을
만들어 날짜 폴더명 안에 이미지를 복사하게 됩니다.

토탈 커맨더 에서 사용할경우 (매개 변수: %P%n %T) 로 지정하여 사용될수 있습니다. 토탈 커맨
더의 현재 창에서 이미지가 들어있는 폴더를 선택하고 매개변수 지정된 버튼을 누를경우 반대쪽
창에 생성된 image 폴더 및에 이미지 수정 날짜 폴더를 만들어 이미지를 복사하게 됩니다.

 

@echo off
setlocal enabledelayedexpansion
:: 소스 폴더와 대상 폴더 지정
set source=%~1
set target=%~2

:: 이미지 파일 확장자 지정
set extensions=*.jpg *.jpeg *.png *.gif *.bmp

:: 대상 폴더가 존재하지 않으면 생성
if not exist "%target%" (
    mkdir "%target%"
)

:: 중복된 폴더 이름이 있으면 번호 붙여서 생성
set index=
:check_name

set folder_name=image%index%
set /a index+=_1
if exist "%target%\%folder_name%" goto check_name
mkdir "%target%\%folder_name%"
set target=%target%%folder_name%

:: 소스 폴더에서 이미지 파일을 찾아서 날짜별 폴더에 이동
for /r "%source%" %%f in (!extensions!) do (
         for /f "tokens=5 delims= " %%a in ('exiftool.exe -FileModifyDate "%%f"') do (
                    set @=%%a
                    set @=!@::=-!
                    if not exist "!target!\!@!" mkdir "!target!\!@!"
                 
              :: 같은 이름의 파일이 이미 존재하는지 확인하고 중복을 피하기 위해 번호 추가
                set "destfile=!target!\!@!\%%~nxf"
                if exist "!destfile!" (
                    set "num=1"
                    
                    :loop
                    set "newdestfile=!target!\!@!\%%~nf_!num!%%~xf"
                    if exist "!newdestfile!" (
                        set /a "num+=1"
                        goto loop
                    )
                    set "destfile=!newdestfile!"
                )
              set /a "num2+=1"
              echo f | xcopy /y "%%f" "!destfile!" >nul | echo %%f !num2! 파일 복사
      )
)

endlocal

 

 

다운로드:

img_move.zip
6.58MB

 

압축파일의 내용물은 img_move.cmd, img_move.ico, exiftool.exe

여기서 exiftool.exe가 핵심 입니다. 촬영날짜나 수정날짜를

추출할수있는 도구로 쓸수 있으며 여러 이미지를 지원하기 때문에

exiftool.exe를 사용했습니다.

반응형

'Bat' 카테고리의 다른 글

CMD 명령어  (0) 2023.07.04
WiFi On/Off Toggle  (0) 2023.06.22
여러 폴더에서 특정 파일 확장자 복사하기  (0) 2023.03.05
배치파일 ini 읽기 및 수정  (0) 2022.08.04
레지스트리값을 배치파일로 변환하는 프로그램  (0) 2022.02.24

댓글

Designed by JB FACTORY