.bat para renombrar parte de un archivo

Primero que todo les agradezco vuestra ayuda en mi inquietud.
Explico detallamente:
Tengo un .bat que copia archivos desde distintas ubicaciones de red a una única carpeta local (facturas), el problema es que estos archivos vienen en la nomenclatura "FACT-12345-cualquiercosaquenomesirveparaguardarlos.pdf" y mi objetivo es que estas facturas queden en la carpeta "facturas" con el nombre solo hasta el numero de factura.
Ya he normalizado los nombres de los archivos por lo cual se que lo que necesito hacer es eliminar del nombre de archivo todo desde la intentar numero 10 hacia la derecha, con filemenu tools pude hacer esto en forma manual pero como este bat es una tarea diaria se me hace necesario que sea automático.
Aquí les dejo unas líneas del bat
@echo off
Echo ---------------------------
Echo Conectar unidad de red
Echo ---------------------------
net use H: \\servidor\carpetapublica /user:dominio\usuario contraseña
H:
xcopy "Usuarios\CONTABILIDAD\FACTURACION 2014\ENERO 2014" C:\sitios\clientes\facturacion /F /R /Y /I /D
xcopy "Usuarios\CONTABILIDAD\FACTURACION 2014\FEBRERO 2014" C:\sitios\clientes\facturacion /F /R /Y /I /D
xcopy "Usuarios\CONTABILIDAD\FACTURACION 2014\MARZO 2014" C:\sitios\clientes\facturacion /F /R /Y /I /D
xcopy "Usuarios\CONTABILIDAD\FACTURACION 2014\ABRIL 2014" C:\sitios\clientes\facturacion /F /R /Y /I /D
El bat detecta cambios en archivos y es incremental, puede que a alguien más le sirva para un propósito parecido
Quedo muy atento a respuesta y agradezco mucho su tiempo

1 respuesta

Respuesta
1

Juan Carlos.

Supongo que una forma de atacar el problema sería renombrar los archivos en la carpeta destino, que, si no he entendido mal, sería C:\sitios\clientes\facturacion para asignarles un nombre obtenido a partir de los primeros diez caracteres de su nombre actual.

Si fuera así creo que podría hacerse con lo siguiente:

@ECHO off
Setlocal EnableDelayedExpansion
c:
cd C:\sitios\clientes\facturacion
FOR /F "tokens=*" %%A IN ('dir /B FACT*.pdf') DO (
set nbre=%%A
set nbre= !nbre:~0,10!
Ren "%%A" ! Nbre!.pdf)

Las dos primeras instrucciones habría que ponerlas al inicio del BAT (si es que no estaban ya incluidas y más por fijar el entorno al principio que por otra cosa) y las demás después de haber hecho las copias a la carpeta destino.

Pruébalo y me dices algo.

Y saludo entre líneas para que la página no me lo quite, que me parece muy feo que hayan decidido quitar precisamente los saludos. Pues eso, que saludos, GGG

Veo que me ha cambiado algunas cosas, supongo que el editor de la página. La línea del comando ren debería ser:
Ren "%%A" ! Nbre!.pdf
A ver si ahora la deja bien.
                                                                                                               

Otra vez me ha hecho los mismos cambios.

Describiré el cambio, en lugar de reescribirlo:

El "Ren" debía ser "ren" y el "Nbre" debería ser "nbre" aunque eso creo que no tiene importancia. Lo que creo que sí la tiene es que entre la primera "!" y "Nbre" no debería haber ningún espacio.

Estimado gggirald, agradezco mucho tu tiempo y respuesta. Primero probé las líneas de instrucción escritas por ti en un bat solo, luego de haber copiado a la carpeta de destino, sin embargo y después de las correcciones mencionadas por ti, el bat tiene un problema.

El problema es que no me cambio ningún nombre porque indica por cada archivo "Ya existe un archivo con el mismo nombre o no se ha encontrado el archivo."

Lamentablemente mi poca experiencia no me ayuda para entender que es lo que debería modificar.


Quedo muy atento a tu respuesta.


Muy agradecido

No sé si has corregido el asunto del espacio entre "!" y "nbre" (los responsables de Todoexpertos, atendiendo a mi solicitud) han intentado, sin éxito, corregir en origen el problema, que provoca, precisamente, la situación que comentas porque genera en primer lugar un ".pdf" al renombrar el primer archivo tratado y luego al intentar asignar a todos los demás ese mismo nombre sale el mensaje que dices.

De modo que es esencial que me digas exactamente como está el comando de renombrado. Debería quedar así:

Ren "%%A" ! Nbre!.pdf)

No te preocupes que acabará saliendo bien.

Estamos igual. Siguiendo las recomendaciones de la gente de la página puse el comando en una caja de "código fuente" usando el icono "<>" del editor de la página. Pero veo que otra vez me ha puesto con mayúsculas "Ren" y "Nbre" y me ha insertado un espacio entre la primera "!" y "Nbre", espacio que es el culpable del mal funcionamiento del bat.

Teniendo en cuenta el problema que existe con el corrector, prefiero dejarte una foto de como esta escrito el bat, atrás se puede apreciar como indica que el archivo ya existe.

Quedo muy atento a respuesta. Gracias

Perdona. Estaba un poco ocupado y no he podido leer tu respuesta.

Efectivamente el código parece estar bien. De modo que la explicación no puede ser el espacio que pensaba. ¿Realmente los primeros 10 caracteres de los nombres de los archivos son distintos unos de otros? Yo así lo entendí a partir de tu comentario "Ya he normalizado los nombres de los archivos". ¿Puedes hacer una prueba con un número pequeño de archivos a renombrar y pasarme la lista? ¿Has comprobado si existe al menos un archivo renombrado, es decir, con un nombre solo de 10 caracteres?

Actualización:

Funcionó!, hice una copia limpia de los archivos mediante el xcopy y luego corrí el bat de renombramiento ahora si fue capaz de renombrar los archivos como correspondía. Muchísimas gracias.
Mi área de experticia es el soporte técnico, por lo tanto, siéntete libre de enviarme algún mensaje si necesitas ayuda en ese ámbito.

Agradezco tu tiempo y dedicación a mi problema.
Voy a juntar y terminar el bat y lo publicaré acá mismo para ver si a alguien mas le puede servir en el futuro.

Saludos

Juan Carlos.

Me alegro mucho de que haya funcionado. Y me parece muy bien que publiques el bat completo por si alguien puede beneficiarse de él. Y gracias por tu ofrecimiento. Si necesitara algo en el área que comentas recurriré a ti. Veo que la página no ha retirado tus saludos. Tal vez me hayan hecho caso y ya no los retiren.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas