Como hacer un bucle bat con datos de un csv

No se muy bien como hacerlo y me gustaría que me explicaras como puedo hacer un bucle leyendo un csv, te explico.

Tengo un programa que se llama wkhtmltopdf que permite crear ficheros PDF desde una pagina web.

Se ejecuta a través de línea de comando, por ejemplo si vas al directorio donde esta instalado y escribes esto:

C:\Program Files\wkhtmltopdf\bin> wkhtmltopdf https://google.es D:/PDF prueba.pdf

te crea el fichero prueba.pdf en el directorio D:/PDF con la pagina de google.es.

Para automatizar la creación de facturas, he añadido un fichero registros. Csv con las facturas que tengo que imprimir en pdf y con este bat:

@echo off
"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe" https://192.168.1.100/facturas/factura.asp?id=2500 D:/PDF/F20-200-01_CLIENTE 1.pdf
"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe" https://192.168.1.100/facturas/factura.asp?id=2501 D:/PDF/F20-202-01_CLIENTE_2.pdf
"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe" https://192.168.1.100/facturas/factura.asp?id=2502 D:/PDF/F20-182-01_CLIENTE 3.pdf
Echo Complete!

Las voy sacando, pero tengo que andar tocando el bat cada vez que quiero hacerlo.

La idea es que el bat lea el fichero registros. Csv, donde están las facturas que tengo que imprimir en pdf:

N_REGISTROS,FACTURA,CLIENTE
3, F20-200-01, CLIENTE_1
3, F20-202-01, CLIENTE 2
3, F20-182-01, CLIENTE_3

y como el csv se lo envío desde el servidor y con una tarea programada puedo conseguir, sin tener que tocar el .bat que se me guarden todos los archivos pdf .

1 respuesta

Respuesta
1

La página no me ha pasado un email informándome de la existencia de esta consulta, como suele ocurrir normalmente. Menos mal que entro de vez en cuando a ver si hay algo nuevo.

Mira a ver si esto te vale:

@echo off
Setlocal EnableDelayedExpansion
set carpdos=D:\PDF
set carp=%carpdos:\=/%
set programa=C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe
set archivo=registros.csv
set url=https://192.168.1.100/facturas/factura.asp?
set /a id=2500
pushd %carpdos%
for /f "skip=1 tokens=2,3 delims=, " %%a in (%archivo%) do echo "%programa%" %url%id=!id! %carp%/%%a_%%b.pdf&set /a id+=1
popd
pause

Tal como está el BAT solo sacará por pantalla el "aspecto" de los comandos a ejecutar en vez de "lanzarlos" realmente. Esto es solo para que puedas echarle un vistazo. Si tienen buena pinta solo tienes que eliminar el ECHO que sigue al DO del FOR. No me he esmerado mucho en temas de presencia de espacios en los nombres de los archivos o carpetas por lo que si aparecieran espacios en alguna de esas cosas podría ser necesario hacer algún ajuste.
Ya me dirás.

¡Gracias! 

Fenomenal, me ha funcionado a la perfección. Al quitar el Echo, ha tirado todo el programa de golpe.

"artista"

un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas