Copiar directorio y subdirectorios con archivos de fotos y renombrar

Iniciado por MAMOJI, 6 Febrero 2015, 09:02 AM

0 Miembros y 1 Visitante están viendo este tema.

MAMOJI

Buenas, estoy intentando copiar directorios donde tengo mis fotografias con datos exif (fecha de la imagen, modificación etc, que son fijas) a otro disco duro para luego renombrarlas con las fechas completa que se hicieron y ordenarlas por años y dias de cada serie de fotografias que hice, estoy intentandolo desde hace unas semanas, hacerlo mediante un proceso por lote .bat, pero no lo consigo, me podriais ayudar, tengo unas 100.000 fotos y quiero tenerlas clasificadas y grabadas para no peerderlas, luego ya las renombraré con programas muy sencillos que he encontrado. Si ademas pudiera comprobar si hay alguna repetida mejor que mejor.

Ejemplo:
       ORIGEN                        RENOMBRADAS
20141019_102901.jpg        20141019-102901.jpg
20141019_IMAGE02.jpg     20141019-103002.jpg
20141020_142503.jpg        20141020-142503.jpg
20141020_162815.jpg        20141020-162815.jpg
20151019_IMAGE01.jpg     20151019-182822.jpg

CLASIFICADAS EN OTRO DIRECTORIO:

POR AÑOS:
Carpeta año: 2014
Directorio 2014-10-10
archivos dentro del mismo  20141019-102901.jpg y 20141019-103002.jpg
Directorio 2014-10-20
archivos dentro del mismo  20141020-142503.jpg y 20141020-162815.jpg

Carpeta año: 2015
Directorio 2015-10-19
archivos dentro del mismo  20151019-182822.jpg

Creo que los que  estais acostumbrados no debe ser muy dificil, a mi la verdad que supercomplicado, estoy intentando aprender, pero no llego y quiero hacerlo metodicamente a mi manera para no perder las fotografias y poder hacer montajes familiares y de amigos.
En la actualidad lo hago con dos programas muy buenos pero siempre tengo que recurrir a ellos y seguir paso a paso y su formato y quisiera poderlo hacer con este proceso .bat nuevo y como yo quiero, para que podais verlos que son lo mejor que he encontrado en años, son muy buenos:
XnViewMP (renomobrar por lotes y clasificar) y Anti-Win (ficheros repetidos)
Muchas gracias de antemano, por ayudar a todos los que sabemos menos.


Eleкtro

Buenas

Cita de: MAMOJI en  6 Febrero 2015, 09:02 AMEjemplo:
      ORIGEN                        RENOMBRADAS
20151019_IMAGE01.jpg     20151019-182822.jpg

Explica de donde sale ese "182822", por favor.

De todas formas el foro no está para hacer la tarea de los demás, aquí te podemos ayudar a resolver dudas específicas para que puedas elaborar el código por ti mismo, ¿donde está tu código?, demuestra que lo has intentado por ti solo.

PD: No se si utilizas algún programa de terceros para leer los metadatos, pero en un lenguaje simple como Batch no puedes leer metadatos, para dicha tarea te recomiendo la aplicación exif-tool: http://www.sno.phy.queensu.ca/~phil/exiftool/

Saludos!








MAMOJI

#2
Es verdad lo que me dices, el numero que me preguntas corresponde a lahoraminuto y segundo.
yo ya he conseguido hace la primera parte que corresponde a la copia de un directorio a otro:

Código (dos) [Seleccionar]
@echo OFF
ECHO Hola, Cuando pulses una tecla copiará el contenido de una capeta a otra que crearemos anteriormente
CD H:\
DEL /S /Q IMPORTAR
MKDIR \IMPORTAR
robocopy h:\MEMORIES H:\IMPORTAR /V /S
exit

Este me funciona perfectamente, pero cuando trato de renombrar con la fecha, no me funciona, lo he hecho de varias formas e imposible, uno de mis intentos.

@echo off echo Respaldando...
echo Renombrando con %date%
set FECHA= %date%
set FECHA=%FECHA:/=%
set FECHA=%FECHA: =%
set FECHA=%FECHA::=%
set FECHA=%FECHA:,=%
xcopy "C:\Documents\log" "C:\Documents\log\%FECHA%" /e/c/h/k/o/x/y
echo Copiado Finalizado
echo Respaldo Completado
pause


tambien lo he intentado hacer directamente con xxcopy con este codigo y nada.
Código (dos) [Seleccionar]
@echo off
color 07
echo Esto es un ejemplo de XXCOPY
XXCopy H:\MEMORIES \ H:\IMPORTAR" /Do:18-10-2014 /E /C /SC /K /H /VL
PAUSE
EXIT
exit


Estoy mirando de ver si puedo hacerlo mediante QT4 programar con comandos EXIFTOOL, SEGUN LO QUE ME HAS INDICADO.

Mod: tema modificado, por favor usa etiquetas GeSHi cuando publiques codigo y no hagas doble post

Eleкtro

Cita de: MAMOJI en  6 Febrero 2015, 13:30 PM
Código (dos) [Seleccionar]
@echo off echo Respaldando...
echo Renombrando con %date%
set FECHA= %date%
set FECHA=%FECHA:/=%
set FECHA=%FECHA: =%
set FECHA=%FECHA::=%
set FECHA=%FECHA:,=%
xcopy "C:\Documents\log" "C:\Documents\log\%FECHA%" /e/c/h/k/o/x/y


Pero... vamos a ver, ahí no estás renombrando ningún archivo.

No has dado datos suficientes sobre los archivos ni sobre la forma en lo que lo quieres estructurar, intentar dar datelles específicos sobre el formato del renombrado.

De hecho, no has especificado claramente que es realmente la ayuda que precisas, si renombrar, mover el directorio, comprobar duplicados, todo, nada, o que es lo buscas... se más específico.

De todas formas Batch es una herramienta muy limitada y es el "lenguaje" más inapropiado para este tipo de tareas, ya que para renombrar archivos con el formato que propones no puedes hacer la substracción necesaría del string de forma natural, y el código se vuelve demasiado tedioso.

Con Batch no puedes buscar duplicados, ya que no puedes hacer una comparación del CRC, ni mucho menos una comparación byte a byte, Batch no es capaz ni dispone de ningun comando externo para dichas tareas.




Si no he entendido mal, todas las imágenes contienen un guión en el nombre, y quieres reemplazar todo lo que esté después de dicho guión, por la fecha actual?,
en ese caso:

Código (dos) [Seleccionar]
@Echo OFF

Set "today=%date:~0,2%%date:~3,2%%date:~6,4%"

For %%# in ("*.jpg") Do (
   Call :Replace "%%~n#" "%today%"
   Echo Nombre original  : "%%~nx#"
   Call Echo Nombre modificado: "%%replaceResult%%%%~x#"
   :: Renombrar archivo...
REM Call Rename "%%~f#" "%%replaceResult%%%%~x#"
)
Pause&Exit

:Replace :: %1=value, %2=replacement
Set "value=%~1"
Call Set "removed=%%value:*_=%%"
Call Set "replaceResult=%%value:%removed%=%%"
Call Set "replaceResult=%%value:%removed%=%%"
Set "replaceResult=%replaceResult%%~2"
Goto:EOF


Si los nombres de los archivos usan otros patrones distintos que necesiten un filtrado/análisis más profundo entonces olvídate de usar Batch, cualquier otro lenguaje te servirá de mayor utilidad para hacer lo mismo y mejor.

Saludos








MAMOJI

Gracias, de antemano disculpas, no he podido atenderte por haber tenido un problema familiar grave, una vez resuelto, te contesto.
Lo que pretendo es sustituir el nombre completo del fichero sin la terminación, por la fecha en que se creo la fotografia, se llame como se llame, lo del duplicado no me preocupa por ahora.
Manuel