Batch para descargar con WGET imágenes de una página de Internet

Descargo diariamente una serie de imágenes de esa página, lo cual seguro que con un solo código que me pases quizás pueda adaptarlo para el resto de las imágenes, por lo tanto te dejo este ejemplo de lo que necesito.

El formato de dirección de la imagen en internet hoy
http://img8.kiosko.net/2019/08/28/ar/ar_clarin.jpg
pero mañana pasará a llamarse
http://img8.kiosko.net/2019/08/29/ar/ar_clarin.jpg
y pasado
http://img8.kiosko.net/2019/08/30/ar/ar_clarin.jpg
Etc, el problema es que cambia todos los días el link día a día

Descargo con esto todos los días

wget http://img8.kiosko.net/2019/08/28/ar/ar_clarin.jpg -P S:\ -O Clarin.jpg

Con eso descargo el .jpg y lo renombro, solo me falta que automáticamente descargue día tras día la última imagen de ese link

1 respuesta

Respuesta
1

Si el formato regional de fecha en tu equipo es dd/mm/aaaa esto podría servirte:

@echo off
set aaaa=%date:~-4%
set mm=%date:~3,2%
set dd=%date:~0,2%&if %dd% LSS 10 set dd=0%dd%
wget http://img8.kiosko.net/%aaaa%/%mm%/%dd%/ar/ar_clarin.jpg -P S:\ -O Clarin.jpg

Supongo que sabes que una forma de ver ese "formato regional" es abrir una ventana de "Símbolo del sistema" y teclear el comando DATE.

Una forma de evitar esa dependencia "regional" es usar este otro procedimiento:

@echo off
for /f "skip=1 delims=" %%x in ('wmic os get localdatetime') do set FechaHora=%%x
set aaaa=%FechaHora:~0,4%
set mm=%FechaHora:~4,2%
set dd=%FechaHora:~6,2%&if %dd% LSS 10 set dd=0%dd%
wget http://img8.kiosko.net/%aaaa%/%mm%/%dd%/ar/ar_clarin.jpg -P S:\ -O Clarin.jpg

Estos bat deben obtener el JPG correspondiente a la fecha de ejecución del bat, pero hay que lanzarlos manualmente. Puedes usar el programador de tareas del sistema operativo para que se lancen automáticamente a la hora que decidas. Si trabajas con Windows 10 tendría que mirar como se hace (yo soy un tanto "vintage" y me gusta el XP).

Hola buen día, te cuento que no he logrado lo que necesitaba, lo he probado en un Windows Server, como así también en un Sistema de Windows 7 y  Windows 10, pero solo se vé que abre y se cierra y no me descarga el archivo. Incluso revisé el formato de hora de cada puesto y todos tienen dd/mm/aaaa. ¿Qué podría ser?

¿Cuál de las dos versiones estás probando? Si, como dices, el formato de fecha de cada puesto es dd/mm/aaaa vamos a centrarnos en la primera. Para ver si las cosas son como deberían te sugiero que insertes antes del comando WGET estas dos líneas:

echo wget http://img8.kiosko.net/%aaaa%/%mm%/%dd%/ar/ar_clarin.jpg -P S:\ -O Clarin.jpg
pause

de este modo podrás ver en la pantalla (mediante el comando ECHO) el formato del comando WGET que se ejecutará después del PAUSE. Tampoco estaría de más poner otro PAUSE después del WGET para que puedas ver lo que se haya escrito en la pantalla antes de cerrarse la ventana (esto es algo que siempre deberías hacer al probar un BAT para poder leer lo que se escriba en la consola antes de cerrarse la ventana).

Ya me contarás.

Bien, en la primera respuesta intenté de las 2 maneras.

Ahora intenté esto:

echo wget http://img8.kiosko.net/%aaaa%/%mm%/%dd%/ar/ar_clarin.jpg -P S:\ -O Clarin.jpg
pause

y me arroja lo siguiente:

wget http://img8.kiosko.net////ar/ar_clarin.jpg -P S:\ -O Clarin.jpg

me descolocó totalmente

Creo que ya sé dónde está el "error". Prueba con esto:

@echo off
set aaaa=%date:~-4%
set mm=%date:~3,2%
set /a dd=%date:~0,2%&if %dd% LSS 10 set dd=0%dd%
echo wget http://img8.kiosko.net/%aaaa%/%mm%/%dd%/ar/ar_clarin.jpg -P S:\ -O Clarin.jpg
Pause
Wget http://img8.kiosko.net/%aaaa%/%mm%/%dd%/ar/ar_clarin.jpg -P S:\ -O Clarin.jpg

Mi idea era que insertaras esas dos líneas en el bat original, como he hecho yo ahora y no que probaras las dos líneas en un bat aparte como parece que has hecho. Pero me di cuenta de que no había probado en realidad lo que te pasé y al hacerlo me salió un error "No se esperaba 10 en este momento." que tú no podías ver porque se te cerraba la ventana. Entonces me di cuenta de que la causa era que la variable DD no era numérica, por lo que el IF que la compara con 10 era incoherente. La he puesto numérica y ya debería funcionar bien.

Buen día, te cuento que hice el .bat, y sigue haciendo como que abre la ventana de símbolo de sistema y cierra al instante, sin dejar ver.

He probado poner una pausa a cada línea, y me pasó algo interesante, porque las primeras 2 líneas, es decir:

set aaaa=%date:~-4%
set mm=%date:~3,2%

No hay problema, ahora, cuando quiere ejecutarse la 3ra, es decir:

set /a dd=%date:~0,2%&if %dd% LSS 10 set dd=0%dd%

Se cierra la consola, me parece que ahí está el error y no llega a la parte de descarga del archivo jpg. Muchas gracias por seguir intentando y disculpa lo poco que pueda hacer de este lado

Por lo que dices debes estar ejecutando el bat directamente desde el explorador de Windows. Yo te recomendaría con carácter general para la depuración de guiones/scripts BAT lanzarlos desde una ventana CMD. Por si no sabes a que me refiero, supongamos que el BAT anterior se llama PRUEBA.BAT y está en la carpeta D:\PRUEBAS. Pues abres una ventana CMD/Símbolo del sistema, te sitúas en la unidad D:, carpeta PRUEBAS y ahí tecleas PRUEBA. De esta forma podrás ver el texto del error y podremos seguir avanzando. ¿Qué versión de Windows tiene el equipo en el que estás probando?

He probado en Windows 10 y sigue dando el mensaje "No se esperaba 10 en este momento." En XP, que es donde probé ayer, sale bien. La nueva solución sería pasar a una línea independiente la instrucción IF. Quedaría así:

@echo off
set aaaa=%date:~-4%
set mm=%date:~3,2%
set /a dd=%date:~0,2%
if %dd% LSS 10 set dd=0%dd%
echo wget http://img8.kiosko.net/%aaaa%/%mm%/%dd%/ar/ar_clarin.jpg -P S:\ -O Clarin.jpg
Pause
Wget http://img8.kiosko.net/%aaaa%/%mm%/%dd%/ar/ar_clarin.jpg -P S:\ -O Clarin.jpg

Wow no sabía que eso de abrir el bat desde una consola mostraría el error que pueda llegar a tener, acabo de aprender algo nuevo.

Ahora si me funciona! logré descargar sin problema alguno. Muchísimas gracias por la solución

Pues, como te digo, es la forma que creo que se debe utilizar en la fase de "depuración". Me alegro mucho de que te haya funcionado. A ver si también hay suerte con la otra consulta pendiente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas