elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Resuelto] Conversor de imagenes por lotes [Batch]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Resuelto] Conversor de imagenes por lotes [Batch]  (Leído 4,090 veces)
Kurono90

Desconectado Desconectado

Mensajes: 106



Ver Perfil
[Resuelto] Conversor de imagenes por lotes [Batch]
« en: 28 Diciembre 2012, 23:10 pm »

Hola a todos

Miren tengo un problema al crear un batch, hace poco comencé a leer sobre esto y encima soy medio duro (en realidad llego a entender pero a los 5 min me olvido, debo releer y termino haciéndome una ensalada en la cabeza)  :rolleyes:.

Lo que estoy tratando de hacer es lo siguiente:

1- Tengo una carpeta la cual contiene varias carpeta y es dentro de estas sub-carpetas donde se encuentran las imágenes .jpg
2 - Quiero crear otra subcarpeta junto a las otras llamada "Procesados", dentro de esta que se creen la misma cantidad de sub-carpetas y con los mismo nombre que las sub-carpetas que se encuentran un nivel arriba... o sea las que están junto a la carpeta Procesado que cree.
3- Necesito que el batch vaya carpeta por carpeta convirtiendo todas las imágenes .jpg a .png o el que yo quiera y que las guarde en la carpeta del mismos nombres creada en Procesados.

Para la conversión de las imágenes uso un programa llamado ImageMagick que trae todas las librerías y ejecutables necesarios para la manipulacion de imagenes por linea de comandos.
El comando que uso para convertir una imagen individualmente o sea manualmente es:

C:\Users\Kurono\My Others\ImageMagick-6.8.0-10\convert.exe "C:\Users\Kurono\Downloads\G-T07\G-T07\G-71\Capitulo 71 (1).jpg" "C:\Users\Kurono\Downloads\G-T07\G-T07\Procesados\G-71\Capitulo 71 (1).png"

Pero hacer eso con todas las paginas de cada capitulo de un tomo de un manga es un trabajo bastante tedioso, por eso pensé en crear un batch que me hiciera todo el trabajo automático. Lamentablemente a veces tengo que re-convertir algunas imágenes de un tomo y meterlas de nuevo en un zip porque me salta error en el lector de manga de la tablet... es como si las "compatibilizara".

Bueno mi Batch es el siguiente pero no funciona, en algo me debo estar equivocando pero no encuentro como solucionarlo:  :huh:

Código:
@echo off
Title Conversor de Manga para la Tablet
echo.
set IM="C:\Users\Kurono\My Others\ImageMagick-6.8.0-10\convert.exe"
echo Dame la ruta de la carpeta raiz del tomo
set /p tomo=
echo.
echo Ok, tus deseos son ordenes.
echo.
dir %tomo% /B > %homepath%\Documents\TEMP.txt
mkdir %tomo%\Procesado
cd %tomo%\Procesado
FOR /F %%1 IN (C:\Users\Kurono\Documents\TEMP.txt) do mkdir %%1
cd %tomo%
for /R %%A in (*.*) do (start /b %IM% "*.jpg" "*ed.jpg") %%A
pause > NUL

Definitivamente no estoy usando bien el ultimo FOR, en donde comenzaría la conversión de imágenes porque el tema de la creación de las carpetas funciona bien ¿como puedo arreglarlo? ¿como lo harían ustedes?

Saludos a todos, gracias de antemano y felices fiestas  ;)


« Última modificación: 29 Diciembre 2012, 01:56 am por Kurono90 » En línea

Meine programmen

Desconectado Desconectado

Mensajes: 121



Ver Perfil
Re: Conversor de imagenes por lotes [Batch]
« Respuesta #1 en: 29 Diciembre 2012, 00:00 am »

Tendrias que usar un bucle FOR. Algo asi

Código:
@ECHO OFF
SetLocal EnableDelayedExpansion
SET /P RUTA1=Escoja la carpeta con las imagenes
SET /P RUTA2=Escoja la carpeta de salida
cd %RUTA1%
FOR /D /r %%A IN (*) DO (SET A=%%A
md "!A:%RUTA1%=%RUTA2%!")
FOR /R %%B IN (*.*) DO (SET B=%%B
SET C=!B:.jpg=.png!
"C:\Users\Kurono\My Others\ImageMagick-6.8.0-10\convert.exe" "!B!" "!C:%RUTA1%=%RUTA2%!")
pause
exit


Si no entiendes alguna parte del codigo te lo explicare encantado. El codigo lo probe yo mismo, y va a las mil maravillas.

Recuerda que las dos rutas las tienes que poner igual, es decir no puedes poner la primera sin el ultimo \ y la sengunda con el ultimo \, si no dara error.


« Última modificación: 29 Diciembre 2012, 00:46 am por Meine programmen » En línea

REMEMBER! Reality is an illusion, the universe is a hologram, BUY GOLD! BYE!!

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Conversor de imagenes por lotes [Batch]
« Respuesta #2 en: 29 Diciembre 2012, 01:21 am »

Hola,

Mi intención no es quitarle protagonismo al esfuerzo de Meine programmen, pero el code no cumple el requisito principal (Una carpeta "Procesados" por carpeta),
si se tienen 600 carpetas distintas para convertir, luego sería un caos para devolver los archivos convertidos a sus carpetas originales xD.

Te dejo mi versión, por si la necesitas:

Código
  1. @ECHO OFF
  2.  
  3. PUSHD "C:\Directorio raíz de las subcarpetas\" || (Exit /B 1)
  4.  
  5. For /R %%# in (*.jpg) Do (
  6. Echo [+] "%%~f#"
  7. MKDIR "%%~dp#PROCESADOS" 2>NUL
  8. (Start /W "" "C:\Users\Kurono\My Others\ImageMagick-6.8.0-10\convert.exe" "%%#" "%%~dp#PROCESADOS\%%~n#.png")
  9. REM Utiliza este comando en caso de no funcionar:
  10. REM Start /W /D "C:\Users\Kurono\My Others\ImageMagick-6.8.0-10\" convert.exe "%%#" "%%~dp#PROCESADOS\%%~n#.png"
  11. )
  12.  
  13. Pause&exit

Saludos
En línea



Kurono90

Desconectado Desconectado

Mensajes: 106



Ver Perfil
[Resuelto] Re: Conversor de imagenes por lotes [Batch]
« Respuesta #3 en: 29 Diciembre 2012, 01:55 am »

Tendrias que usar un bucle FOR. Algo asi

Código:
@ECHO OFF
SetLocal EnableDelayedExpansion
SET /P RUTA1=Escoja la carpeta con las imagenes
SET /P RUTA2=Escoja la carpeta de salida
cd %RUTA1%
FOR /D /r %%A IN (*) DO (SET A=%%A
md "!A:%RUTA1%=%RUTA2%!")
FOR /R %%B IN (*.*) DO (SET B=%%B
SET C=!B:.jpg=.png!
"C:\Users\Kurono\My Others\ImageMagick-6.8.0-10\convert.exe" "!B!" "!C:%RUTA1%=%RUTA2%!")
pause
exit


Si no entiendes alguna parte del codigo te lo explicare encantado. El codigo lo probe yo mismo, y va a las mil maravillas.

Recuerda que las dos rutas las tienes que poner igual, es decir no puedes poner la primera sin el ultimo \ y la sengunda con el ultimo \, si no dara error.

¡¡Impresionante!! ¡ muchísimas gracias! funciona a la perfección  ::)

Primero no me andaba porque reemplazaba mal los ***** (asteriscos), no me daba cuenta bien como hacerlo. Es que soy muy novato entonces iba probando alternativas y ninguna me funcionaba, hasta que vi que editaste el batch. Funciona de 10!!

Hay cosas del código que nunca había visto como SetLocal EnableDelayedExpansion y el uso de los signos de ! en las letras de las variables.
Es un código que esta a otro nivel, no quiero imaginar cuanto hubiese tardado yo en lograrlo  :laugh:

Hola,

Mi intención no es quitarle protagonismo al esfuerzo de Meine programmen, pero el code no cumple el requisito principal (Una carpeta "Procesados" por carpeta),
si se tienen 600 carpetas distintas para convertir, luego sería un caos para devolver los archivos convertidos a sus carpetas originales xD.

Te dejo mi versión, por si la necesitas:

Código
  1. @ECHO OFF
  2.  
  3. PUSHD "C:\Directorio raíz de las subcarpetas\" || (Exit /B 1)
  4.  
  5. For /R %%# in (*.jpg) Do (
  6. Echo [+] "%%~f#"
  7. MKDIR "%%~dp#PROCESADOS" 2>NUL
  8. (Start /W "" "C:\Users\Kurono\My Others\ImageMagick-6.8.0-10\convert.exe" "%%#" "%%~dp#PROCESADOS\%%~n#.png")
  9. REM Utiliza este comando en caso de no funcionar:
  10. REM Start /W /D "C:\Users\Kurono\My Others\ImageMagick-6.8.0-10\" convert.exe "%%#" "%%~dp#PROCESADOS\%%~n#.png"
  11. )
  12.  
  13. Pause&exit

Saludos

Muchisimas gracias EleKtro H@cker, es impresionante tu código también, lo bueno es que me crea la carpeta Procesado en cada capitulo lo cual me es conveniente en otro grupo de imágenes que tengo que convertir.

En realidad era una sola carpeta llamada Procesados donde se crearía la misma estructura de subcarpetas donde estaban los capítulos .jpg por lo que me facilita luego comprimir todo a .zip.
Así el código de Meine programmen funciona perfecto siempre y cuando no cree la carpeta "Procesados" en la misma carpeta raíz de las subcarpetas.

Pero el tuyo Elektro H@cker tiene de bueno que me crea una carpeta Procesados por cada sub-carpeta lo cual me es muy conveniente para otro grupo de imágenes, mas que nada unos álbumes de fotos que tenia que editar en donde si me interesa descentralizar las imágenes.

¡¡Acabo de probar tu código y funciona de 10 también!! esto definitivamente no lo lograría yo solo

No se como agradecerles, ya puedo dar por resuelto el tema. Definitivamente voy a tener que leer y mucho para aprender bien todo este mundillo de los scripts y la programación, aunque no creo tener el talento para hacerlo.

Jajaaja hasta me da vergüenza ahora mostrar mi medio batch que puse en el primer mensaje  :P

Saludos a ambos!
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: [Resuelto] Conversor de imagenes por lotes [Batch]
« Respuesta #4 en: 29 Diciembre 2012, 02:19 am »

Así da gusto ayudar :xD

PD: No te recomiendo que te acostumbres a usar setlocal enabledelayedexpansion para procesar archivos. Setlocal enabledelayedexpansion es más rápido, pero tiene sus inconvenientes, usa "CALL".

Felices fiestas.
En línea



Kurono90

Desconectado Desconectado

Mensajes: 106



Ver Perfil
Re: [Resuelto] Conversor de imagenes por lotes [Batch]
« Respuesta #5 en: 29 Diciembre 2012, 22:32 pm »

Así da gusto ayudar :xD

PD: No te recomiendo que te acostumbres a usar setlocal enabledelayedexpansion para procesar archivos. Setlocal enabledelayedexpansion es más rápido, pero tiene sus inconvenientes, usa "CALL".

Felices fiestas.

Ok gracias, tendré en cuenta lo de setlocal ahora que intentaré aprender de lleno. Veré como me va.  ;D

Felices fiestas!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como hacer tratado de imagenes por lotes
Diseño Gráfico
[.:: NauJFracT ::.] 4 2,922 Último mensaje 6 Mayo 2004, 14:54 pm
por Morris
Programación BATCH (por lotes).
Scripting
jeferbla 1 3,259 Último mensaje 11 Julio 2007, 10:54 am
por jeferbla
programacion con archivos de procesamiento por lotes - batch - *.bat
Scripting
hacksi 2 6,254 Último mensaje 8 Diciembre 2008, 16:31 pm
por hacksi
Editar imágenes por lotes [AYUDA]
Multimedia
betteancor 1 2,513 Último mensaje 13 Diciembre 2018, 13:54 pm
por EdePC
Assetizr, redimensiona imágenes por lotes gratis en macOS y en Windows 10
Noticias
wolfbcn 0 1,076 Último mensaje 21 Enero 2019, 01:57 am
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines