Newton escribió:Prueba con las siguientes aplicaciones:
XnView
AmoK Exif Sorter
Namexif (Windows)
Rename to EXIF date (GNU/Linux)
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
IF NOT EXIST "%~dp0EXIV2.EXE" (
ECHO.
ECHO ERROR: No se encuentra "%~dp0EXIV2.EXE". Imposible continuar
GOTO _FIN
)
SET PATH=%PATH%;%~dp0
SET NOMBRETMP=_%TIME:~1,1%%TIME:~3,2%%TIME:~6,2%%TIME:~9,2%%RANDOM%
SET TOTAL=0
SET CON_EXIF=0
SET SIN_EXIF=0
SET MESES=SI
CLS
TITLE %~nx0 "%CD%
ECHO.
ECHO Tratando los ficheros *.JPG de "%CD%"
ECHO --------------------------------------------------------------------------------
ECHO.
FOR %%j IN (*.jpg) DO (
SET /A TOTAL=!TOTAL!+1
SET NOMBRE="%%j"
CALL :_FECHA_EXIF
IF NOT [!FECHA_EXIF!]==[] (
SET /A CON_EXIF=!CON_EXIF!+1
SET NUEVO="!YYYY!!MM!!DD!_!HORA!!MIN!!SEG!.jpg"
IF /i NOT [!NOMBRE!]==[!NUEVO!] (
ECHO !NOMBRE! Renombrado a !NUEVO!
REN !NOMBRE! !NUEVO!
SET NOMBRE=!NUEVO!
)
CALL :_RUTA_JPG
MOVE !NOMBRE! !RUTA_JPG! > NUL
ECHO !NOMBRE! Movido a la carpeta !RUTA_JPG!
) ELSE (
SET /A SIN_EXIF=!SIN_EXIF!+1
ECHO !NOMBRE! No contiene fecha EXIF valida
IF NOT EXIST 0000\NUL MKDIR 0000
MOVE !NOMBRE! 0000\!NOMBRE! > NUL
ECHO !NOMBRE! Movido a la carpeta ".\0000"
)
)
IF %TOTAL% GTR 0 (
ECHO.
ECHO --------------------------------------------------------------------------------
ECHO.
ECHO Tratados %TOTAL% ficheros JPG, de los cuales:
ECHO %CON_EXIF% archivos si tenian una fecha correcta
ECHO %SIN_EXIF% archivos no tenian una fecha correcta
ECHO.
ECHO Proceso finalizado.
) ELSE (
CLS
ECHO.
ECHO No hay ficheros *.JPG a tratar en
ECHO "%CD%"
)
ECHO.
TITLE %~nx0 - Proceso finalizado
GOTO _FIN
:_FECHA_EXIF
SET FECHA_EXIF=
START /B /LOW /WAIT EXIV2.EXE -g Exif.Photo.DateTimeOriginal %NOMBRE% > %NOMBRETMP%.txt
FOR /F "tokens=* " %%a IN (%NOMBRETMP%.txt) DO SET FECHA_EXIF=%%a
DEL %NOMBRETMP%.txt > NUL
SET YYYY=%FECHA_EXIF:~-19,4%
SET MM=%FECHA_EXIF:~-14,2%
SET DD=%FECHA_EXIF:~-11,2%
SET HORA=%FECHA_EXIF:~-8,2%
SET MIN=%FECHA_EXIF:~-5,2%
SET SEG=%FECHA_EXIF:~-2,2%
EXIT /B
:_RUTA_JPG
IF [%MESES%]==[SI] (
IF [%MM%]==[01] SET MES=01 Enero
IF [%MM%]==[02] SET MES=02 Febrero
IF [%MM%]==[03] SET MES=03 Marzo
IF [%MM%]==[04] SET MES=04 Abril
IF [%MM%]==[05] SET MES=05 Mayo
IF [%MM%]==[06] SET MES=06 Junio
IF [%MM%]==[07] SET MES=07 Julio
IF [%MM%]==[08] SET MES=08 Agosto
IF [%MM%]==[09] SET MES=09 Septiembre
IF [%MM%]==[10] SET MES=10 Octubre
IF [%MM%]==[11] SET MES=11 Noviembre
IF [%MM%]==[12] SET MES=12 Diciembre
) ELSE (
SET MES=%MM%
)
SET RUTA_JPG=".\%YYYY%\%MES%\%DD%"
IF NOT EXIST "%YYYY%\NUL" MKDIR "%YYYY%"
IF NOT EXIST "%YYYY%\%MES%\NUL" MKDIR "%YYYY%\%MES%"
IF NOT EXIST "%YYYY%\%MES%\%DD%\NUL" MKDIR "%YYYY%\%MES%\%DD%"
EXIT /B
:_FIN
ENDLOCAL
PAUSE > NUL
jb_______ escribió:Yo anduve buscando programa spara ordenar las fotos, y el caso es que por una cosa o por otra ninguno satisfacia mis necesidades, asi que me hice un pequeño programa .BAT que usase la utilidad gratuita EXIV2.EXE que obtiene los datos exif del fichero JPG y lo ordena segun su fecha. si no tiene exift va a una carpeta llamada 0000
jb_______ escribió:Yo anduve buscando programa spara ordenar las fotos, y el caso es que por una cosa o por otra ninguno satisfacia mis necesidades, asi que me hice un pequeño programa .BAT que usase la utilidad gratuita EXIV2.EXE que obtiene los datos exif del fichero JPG y lo ordena segun su fecha. si no tiene exift va a una carpeta llamada 0000
El programa genera una estructura de carpetas del tipo año\mes o año\01 enero
año1
+--- 01
+---02
año2
+---05
+---06
...@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
IF NOT EXIST "%~dp0EXIV2.EXE" (
ECHO.
ECHO ERROR: No se encuentra "%~dp0EXIV2.EXE". Imposible continuar
GOTO _FIN
)
SET PATH=%PATH%;%~dp0
SET NOMBRETMP=_%TIME:~1,1%%TIME:~3,2%%TIME:~6,2%%TIME:~9,2%%RANDOM%
SET TOTAL=0
SET CON_EXIF=0
SET SIN_EXIF=0
SET MESES=SI
CLS
TITLE %~nx0 "%CD%
ECHO.
ECHO Tratando los ficheros *.JPG de "%CD%"
ECHO --------------------------------------------------------------------------------
ECHO.
FOR %%j IN (*.jpg) DO (
SET /A TOTAL=!TOTAL!+1
SET NOMBRE="%%j"
CALL :_FECHA_EXIF
IF NOT [!FECHA_EXIF!]==[] (
SET /A CON_EXIF=!CON_EXIF!+1
SET NUEVO="!YYYY!!MM!!DD!_!HORA!!MIN!!SEG!.jpg"
IF /i NOT [!NOMBRE!]==[!NUEVO!] (
ECHO !NOMBRE! Renombrado a !NUEVO!
REN !NOMBRE! !NUEVO!
SET NOMBRE=!NUEVO!
)
CALL :_RUTA_JPG
MOVE !NOMBRE! !RUTA_JPG! > NUL
ECHO !NOMBRE! Movido a la carpeta !RUTA_JPG!
) ELSE (
SET /A SIN_EXIF=!SIN_EXIF!+1
ECHO !NOMBRE! No contiene fecha EXIF valida
IF NOT EXIST 0000\NUL MKDIR 0000
MOVE !NOMBRE! 0000\!NOMBRE! > NUL
ECHO !NOMBRE! Movido a la carpeta ".\0000"
)
)
IF %TOTAL% GTR 0 (
ECHO.
ECHO --------------------------------------------------------------------------------
ECHO.
ECHO Tratados %TOTAL% ficheros JPG, de los cuales:
ECHO %CON_EXIF% archivos si tenian una fecha correcta
ECHO %SIN_EXIF% archivos no tenian una fecha correcta
ECHO.
ECHO Proceso finalizado.
) ELSE (
CLS
ECHO.
ECHO No hay ficheros *.JPG a tratar en
ECHO "%CD%"
)
ECHO.
TITLE %~nx0 - Proceso finalizado
GOTO _FIN
:_FECHA_EXIF
SET FECHA_EXIF=
START /B /LOW /WAIT EXIV2.EXE -g Exif.Photo.DateTimeOriginal %NOMBRE% > %NOMBRETMP%.txt
FOR /F "tokens=* " %%a IN (%NOMBRETMP%.txt) DO SET FECHA_EXIF=%%a
DEL %NOMBRETMP%.txt > NUL
SET YYYY=%FECHA_EXIF:~-19,4%
SET MM=%FECHA_EXIF:~-14,2%
SET DD=%FECHA_EXIF:~-11,2%
SET HORA=%FECHA_EXIF:~-8,2%
SET MIN=%FECHA_EXIF:~-5,2%
SET SEG=%FECHA_EXIF:~-2,2%
EXIT /B
:_RUTA_JPG
IF [%MESES%]==[SI] (
IF [%MM%]==[01] SET MES=01 Enero
IF [%MM%]==[02] SET MES=02 Febrero
IF [%MM%]==[03] SET MES=03 Marzo
IF [%MM%]==[04] SET MES=04 Abril
IF [%MM%]==[05] SET MES=05 Mayo
IF [%MM%]==[06] SET MES=06 Junio
IF [%MM%]==[07] SET MES=07 Julio
IF [%MM%]==[08] SET MES=08 Agosto
IF [%MM%]==[09] SET MES=09 Septiembre
IF [%MM%]==[10] SET MES=10 Octubre
IF [%MM%]==[11] SET MES=11 Noviembre
IF [%MM%]==[12] SET MES=12 Diciembre
) ELSE (
SET MES=%MM%
)
SET RUTA_JPG=".\%YYYY%\%MES%\%DD%"
IF NOT EXIST "%YYYY%\NUL" MKDIR "%YYYY%"
IF NOT EXIST "%YYYY%\%MES%\NUL" MKDIR "%YYYY%\%MES%"
IF NOT EXIST "%YYYY%\%MES%\%DD%\NUL" MKDIR "%YYYY%\%MES%\%DD%"
EXIT /B
:_FIN
ENDLOCAL
PAUSE > NUL