Programación Funcional - Crear un bat que lea archivos pdf y copie

 
Vista:
sin imagen de perfil

Crear un bat que lea archivos pdf y copie

Publicado por Celes (3 intervenciones) el 04/02/2016 11:45:42
Buenos días, he decidido registrarme en la web ya que suelo encontrar aquí bastante ayuda leyendo, o cuando me quedo atascado.

Os comento un poco lo que estoy intentando.
Tengo una carpeta con bastantes archivos pdf ( unos 1000 archivos), cada pdf pertenece a un cliente, dicho archivo tiene dni, nombre y apellidos y un número. ( Ej: 110 - 000000000A pepito perez perez)
Tengo que ir copiando o moviendo (eso me da igual) cada pdf a la carpeta del cliente. Cada cliente tiene su carpeta propia y dicha carpeta de cliente el nombre es nombre y los apellidos. ( Ej. carpeta: pepito perez perez )

¿Sería posible hacer un archivo BAT, que recorra los archivos pdf y cuando coincida en nombre y apellidos el pdf haga copia dentro de su carpeta?

Gracias y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Crear un bat que lea archivos pdf y copie

Publicado por José (4 intervenciones) el 05/02/2016 09:44:54
Hola

Te envío dos enlaces, que creo que te pueden ayudar.

https://es.wikipedia.org/wiki/Archivo_batch

http://todohacker.com/tutoriales/lenguaje-batch

----

Para poner una variable debemos escribir se nombrevariable= valor. ej: set nombre= pepito

y para referirnos a esa variable debemos escribir el nombre de la variable entre %% ejemplo: hola %nombre%

----
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Crear un bat que lea archivos pdf y copie

Publicado por Celes (3 intervenciones) el 08/02/2016 11:04:08
Buenos días, gracias por su respuesta y su tiempo, buscando encontré una consulta similar a la mía con éste ejemplo.

"@echo off
CD \pdf
FOR %%a IN (*.PDF) DO IF EXIST \pdf\%%~na\nul MOVE %%a \Ejemplo\%%~na >nul
CD \Ejemplo"

En este caso mueve el archivo pdf si el archivo y la carpeta tienen el mismo nombre. (funciona perfecto)
Mi problema es que mi archivo contiene el mismo nombre pero todos empiezan por "111 - nombre apellido1 apellido2". ( esa estructura no puedo cambiarla ya que la necesito una vez copiado en la carpeta del cliente.)
He leído que metiendo una línea con un find puede leer el nombre del archivo, pero aquí ya me he perdido y después de muchas pruebas de momento nada.

¿Esto se puede hacer o no es viable?

Gracias de nuevo y un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Crear un bat que lea archivos pdf y copie

Publicado por José (4 intervenciones) el 09/02/2016 13:12:36
Hola.

Se puede hacer, he encontrado un ejemplo, que quizás puedan servirte:

http://www.foro.lospillaos.es/ayuda-con-bat-leer-nombre-de-archivo-vt4501.html

también:

RECORRIDO DE TOKENS EN LINEAS DE TEXTO:
FOR /F ["tokens=... delims=..."] %V IN (archivo | 'comando' | "cadena") DO comando
está en: http://profesoremiliobarco.blogspot.com.es/2012/05/comando-for-para-archivos-bat.html

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Crear un bat que lea archivos pdf y copie

Publicado por Celes (3 intervenciones) el 16/02/2016 09:58:37
Buenos días.

Sigo dándole vueltas, me tiene la cabeza rota y de momento no tengo nada.

Gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Crear un bat que lea archivos pdf y copie

Publicado por José (4 intervenciones) el 17/02/2016 11:01:27
Hola:

Por partes:

listar archivos
1
2
3
for %f in (*) do (
   echo %f
)
mover archivos con una extensión a la papelera
1
2
3
for %f in (*.jpg, *.mp3, *.bmp) do (
   move %f c:\recycler
)

obtener un nombre de un archivo, sabiendo una parte
1
2
3
FOR %F IN (*buenas*.pdf) DO SET NombreArchivo=%F
ECHO NombreArchivo: %NombreArchivo%
---caracteres comodín--- *; ? .

Por una parte tenemos los nombres de los cliente, y creadas sus carpetas,
y dentro de los archivos también estarán estos nombres

Pues al grano:


1º - lista para esta seguro
1
for %f in([nuestra dirección]*nuestro_cliente.pdf do { printado--- verifica

2º.- copia uno
1
2
for %f in([nuestra dirección]*nuestro_cliente.pdf do { copia mueve a su carpeta
	move move %f c:\nuestro_cliente[su dir]

3º obtener nombre del cliente; tenemos 12145nombre.pdf, creo.
Aquí está el problema.

Puedes buscar coincidencias, ejemplo, partes de una variable iguales,
recorriendo los archivos y dentro de este bucle for,
recorre los directorios si hay coincidencia, copiar / mover esa coincidencia.

Primero busca esa coincidencia.
1
2
3
4
5
6
7
8
for  --recorrido de archivos, variableX <- un archivo
	for recorrido de directorios  --FOR /D        %V IN (lista) DO comando
		coinciden una parte con el todo
			if %cadena1% == %cadena2% OrdenAEjecutar
			( donde una cadena ha de tener *cadena, coincidan al final)
		si hay coincidencia primero printa para estar seguro, luego ya ejecutaras.
	fin for
fin for


Lo puedes hacer con delimitadores, mira si puedes delimitar los nombres, quitar los números, número de caracteres....

Espero que te sirva... saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar