exiftool로 사진정보 일괄 변경 배치 스크립트

@ECHO OFF
REM ------------------------------------------------------------------
REM -
REM - exiftool을 사용하여 사진 파일의 GPS, 시간 및 기타 정보를
REM - 일괄 변경하는 스크립트
REM -
REM ------------------------------------------------------------------

REM ------------------------------------------------------------
REM CODEPAGE를 UTF-8로 변경
REM ------------------------------------------------------------
CHCP 65001 1> NUL 2> NUL
CLS

REM ------------------------------------------------------------------
REM - 기본 설정값
REM ------------------------------------------------------------------
SET "EXIFTOOL_PATH=C:\PortableApps\cmd_exiftool"
SET "EXIFTOOL=%EXIFTOOL_PATH%\bin\exiftool.exe"
SET "CONFIG_FILE=%EXIFTOOL_PATH%\config.txt"
SET "PATH=%EXIFTOOL_PATH%\bin;%PATH%"

REM ------------------------------------------------------------------
REM - 명령행 인수 처리
REM ------------------------------------------------------------------
SET ARGC=0
FOR %%X IN (%*) DO SET /A ARGC+=1
IF %ARGC% LSS 1 (
    CALL :FUNC_USAGE %0
    EXIT /B 1
)

REM ------------------------------------------------------------------
REM - 설정파일 파싱
REM ------------------------------------------------------------------
FOR /F "EOL=# TOKENS=1,2 DELIMS==" %%A IN (%CONFIG_FILE%) DO (
    IF %%A==MAKER SET MAKER=%%B
    IF %%A==MODEL SET MODEL=%%B
    IF %%A==ARTIST SET ARTIST=%%B
    IF %%A==SOFTWARE SET SOFTWARE=%%B
    IF %%A==COPYRIGHT SET COPYRIGHT=%%B
    IF %%A==DATETIME SET DATETIME=%%B
    IF %%A==LATITUDE SET LATITUDE=%%B
    IF %%A==LONGITUDE SET LONGITUDE=%%B
)

REM ------------------------------------------------------------------
REM - GPS 정보 변경
REM ------------------------------------------------------------------
IF "%LATITUDE%" NEQ "" (
    IF "%LONGITUDE%" NEQ "" (
        CALL :FUNC_EXIFTOOL_SET_GPS %1
    )
)

REM ------------------------------------------------------------------
REM - 날짜 정보 변경
REM ------------------------------------------------------------------
IF "%DATETIME%" NEQ "" (
    CALL :FUNC_EXIFTOOL_SET_DATETIME %1
)

REM ------------------------------------------------------------------
REM - 기타 정보 변경
REM ------------------------------------------------------------------
SET "EXIFTOOL_MISC_OPT="
IF "%MAKER%" NEQ ""     SET EXIFTOOL_MISC_OPT=%EXIFTOOL_MISC_OPT% -make="%MAKER%"
IF "%MODEL%" NEQ ""     SET EXIFTOOL_MISC_OPT=%EXIFTOOL_MISC_OPT% -model="%MODEL%"
IF "%ARTIST%" NEQ ""    SET EXIFTOOL_MISC_OPT=%EXIFTOOL_MISC_OPT% -artist="%ARTIST%"
IF "%SOFTWARE%" NEQ ""  SET EXIFTOOL_MISC_OPT=%EXIFTOOL_MISC_OPT% -creatortool="%SOFTWARE%" -software="%SOFTWARE%"
IF "%COPYRIGHT%" NEQ "" SET EXIFTOOL_MISC_OPT=%EXIFTOOL_MISC_OPT% -copyright="%COPYRIGHT%"
CALL :FUNC_EXIFTOOL_SET_INFO %1

REM ------------------------------------------------------------------
REM - 정보 출력
REM ------------------------------------------------------------------
CALL :FUNC_EXIFTOOL_LIST %1

:EXIT_MAIN
PAUSE
EXIT /B %ERRORLEVEL%

REM ------------------------------------------------------------------
REM -
REM - 함수: exiftool 시간 설정
REM -
REM ------------------------------------------------------------------
:FUNC_EXIFTOOL_SET_DATETIME
    ECHO ------------------------------------------------------------------
    ECHO - 시간 정보를 변경합니다. (%DATETIME%)
    ECHO - 시간은 GMT+9(서울)로 변경
    ECHO ------------------------------------------------------------------
    %EXIFTOOL% -overwrite_original -datetimeoriginal="%DATETIME%" "%1"
    %EXIFTOOL% -overwrite_original "-datetimeoriginal-=9" "%1"
    %EXIFTOOL% -overwrite_original "-gpstimestamp<$datetimeoriginal" "%1"
    %EXIFTOOL% -overwrite_original "-gpsdatestamp<$datetimeoriginal" "%1"
    %EXIFTOOL% -overwrite_original "-datetimeoriginal+=9" "%1"
EXIT /B /0

REM ------------------------------------------------------------------
REM -
REM - 함수: exiftool GPS 정보
REM -
REM ------------------------------------------------------------------
:FUNC_EXIFTOOL_SET_GPS
    ECHO ------------------------------------------------------------------
    ECHO - GPS 정보를 변경합니다.
    ECHO - 위도:"%LATITUDE%", 경도:"%LONGITUDE%"
    ECHO ------------------------------------------------------------------

    REM 문자열 양옆 불필요한 스페이스 없애기
    FOR /F "TOKENS=* DELIMS= " %%A IN ("%LATITUDE%") DO SET LATITUDE=%%A
    FOR /F "TOKENS=* DELIMS= " %%A IN ("%LONGITUDE%") DO SET LONGITUDE=%%A

    %EXIFTOOL% -overwrite_original -GPSLatitudeRef=N -GPSLatitude=%LATITUDE% -GPSLongitudeRef=E -GPSLongitude=%LONGITUDE% "%1"
    rem %EXIFTOOL% -l "%1"
EXIT /B /0

REM ------------------------------------------------------------------
REM -
REM - 함수: exiftool 정보 보기
REM -
REM ------------------------------------------------------------------
:FUNC_EXIFTOOL_LIST
    %EXIFTOOL% -l "%1"
EXIT /B /0

REM ------------------------------------------------------------------
REM -
REM - 함수: exiftool 기타 정보
REM -
REM ------------------------------------------------------------------
:FUNC_EXIFTOOL_SET_INFO
    ECHO ------------------------------------------------------------------
    ECHO - 기타 정보를 변경합니다.
    ECHO ------------------------------------------------------------------
    ECHO %EXIFTOOL% -overwrite_original %EXIFTOOL_MISC_OPT% "%1"
    %EXIFTOOL% -overwrite_original %EXIFTOOL_MISC_OPT% "%1"
EXIT /B /0

REM ------------------------------------------------------------------
REM -
REM - 함수: 사용법 출력
REM -
REM ------------------------------------------------------------------
:FUNC_USAGE
    ECHO %1: exiftool helper
    ECHO config file: %CONFIG_FILE%
    ECHO.
    ECHO Usage:
    ECHO   %1 ^<wildcard^>
    ECHO   ex) %1 D:\0_tmp\*.jpg
    PAUSE
EXIT /B /0


######################################################################
#
# exiftool로 일괄 설정할 값을 여기에 명시한다.
#
######################################################################

# Maker 설정 (-make="samsung")
MAKER=OEM(China)

# 카메라의 모델명을 설정한다. (-model='Kodak Hawkeye Instamatic")
MODEL=SJ9000X ELITE PRO2

# 찍은 사람 (-artist="Eric Johnson")
ARTIST=

# 소프트웨어 (-software="Adobe Photoshop CS3")
SOFTWARE=DV681 20191016 V1.0

# Copyright (-copyright="Copyright(c) 2020 Eric Johnson, all rights reserved.")
#COPYRIGHT=

# 날짜를 설정한다.
#DATETIME=2023:6:23 22:39:0

# 위도를 설정한다 (지구상에서 적도를 기준으로 북쪽 또는 남쪽).
LATITUDE=37.6895554

# 경도를 설정한다. (지구상에서 본초 자오선을 기준으로 동쪽 또는 서쪽)
LONGITUDE=126.875444
위로 스크롤