Bat para buscar y renombrar archivos...

Me pueden ayudar con una .Bat que me ayude a buscar dentro de un subconjunto de carpetas, determinados archivos con "x"nombres para renombrar.

Ejemplo mi ruta es

C:\Users\Auditorias\Documents\EMB 2021

Dentro de esta carpeta tengo aprox 3000 carpetas (y subiendo) con archivos en .PDF, estos los originó del scanner pero al guardarlos por defaul los deja como 0.pdf, 01.pdf etc, y los quiero cambias a facturas pedimento etc.

1 respuesta

Respuesta
2

No creo que sea complicado lo que pides, pero tendrás que concretar algo más. Por ejemplo, ¿qué nombres hay que buscar y cómo se deben renombrar?

Si quieres que en todas las carpetas dependientes de la que indicas todos los archivos de nombre 0.pdf pasen a llamarse facturas.pdf y todos los de nombre 01.pdf pasen a llamarse pedimento.pdf creo que el siguiente BAT podría servir:

@echo off
set carpeta=C:\Users\Auditorias\Documents\EMB 2021
pushd %carpeta%
for /f  "tokens=*" %%i in ('dir /b/s 0.pdf) do (echo ren "%%i" facturas.pdf)
for /f  "tokens=*" %%i in ('dir /b/s 01.pdf) do (echo ren "%%i" pedimento.pdf)
Popd

Prueba y me dices

Resulta que después de enviar esta respuesta me di cuenta de que el bat que había enviado era de "depuración", de modo que en vez de renombrar los archivos se limitaba a presentar en pantalla el comando de renombrado para poder ver si era correcto. Pero envié un nuevo mensaje corrigiendo esa errata y hoy veo que no aparece. Este sería el bat que haría efectivo el renombrado:

@echo off
set carpeta=C:\Users\Auditorias\Documents\EMB 2021
pushd %carpeta%
for /f  "tokens=*" %%i in ('dir /b/s 0.pdf) do (ren "%%i" facturas.pdf)
for /f  "tokens=*" %%i in ('dir /b/s 01.pdf) do (ren "%%i" pedimento.pdf)
Popd

Hola, ejecute el bat dentro y fuera de la carpeta principal, después dentro de una subcarpeta, y no me realizó el rename adjunto imagenes de estructura  de carpeta principal con subcarpetas y archivos dentro de las subcarpetas, así mismo los archivos a renombrar son 

0.pdf a factura.pdf

01.pdf a pedimento.pdf

02.pdf a anexos.pdf

Gracias por el apoyo...

No sé si lanzas el bat desde una ventana CMD (Símbolo del sistema) o lo haces desde el explorador de Windows. Por ello he decidido añadir un comando de PAUSE para no perder la ventana y que puedas ver y mostrar lo que sale. De momento vamos a trabajar con la primera versión de depuración, que mostrará los comandos que se ejecutarían pero sin ejecutarlos realmente. Sería esta:

@echo off
set carpeta=C:\Users\Auditorias\Documents\EMB 2021
pushd %carpeta%
for /f  "tokens=*" %%i in ('dir /b/s 0.pdf) do (echo ren "%%i" factura.pdf)
for /f  "tokens=*" %%i in ('dir /b/s 01.pdf) do (echo ren "%%i" pedimento.pdf)
for /f  "tokens=*" %%i in ('dir /b/s 02.pdf) do (echo ren "%%i" anexos.pdf)
Popd
Pause

Ejecuta el BAT (puede estar en cualquier carpeta puesto que el propio BAT se sitúa en la de referencia con el PUSHD) y copia por aquí la ventana de CMD para que podamos ver lo que está pasando.

Supongo que las pruebas que comentas las habrás hecho con la segunda versión del BAT y no con la primera porque la primera, como ya dije, no ejecutaba los RENAME sino que solo mostraba los comandos que se ejecutarían si se eliminaba el ECHO.

Hola, mira este es el error que manda, gracias por el apoyo

Perdón, hay un problema de "sintaxis" en lo que te propuse. Falta el apóstrofe de cierre del comando DIR en cada uno de los FOR.

Lo correcto sería esto:

@echo off
set carpeta=C:\Users\Auditorias\Documents\EMB 2021
pushd %carpeta%
for /f  "tokens=*" %%i in ('dir /b/s 0.pdf') do (echo ren "%%i" factura.pdf)
for /f  "tokens=*" %%i in ('dir /b/s 01.pdf') do (echo ren "%%i" pedimento.pdf)
for /f  "tokens=*" %%i in ('dir /b/s 02.pdf') do (echo ren "%%i" anexos.pdf)
Popd
Pause

Y no olvides que esta "versión" es de depuración, es decir que solo mostrará el comando que se ejecutaría pero sin ejecutarlo. Una vez que consideres que es correcto debes quitar los ECHO de los DO y dejarlo así:

@echo off
set carpeta=C:\Users\Auditorias\Documents\EMB 2021
pushd %carpeta%
for /f  "tokens=*" %%i in ('dir /b/s 0.pdf') do (ren "%%i" factura.pdf)
for /f  "tokens=*" %%i in ('dir /b/s 01.pdf') do (ren "%%i" pedimento.pdf)
for /f  "tokens=*" %%i in ('dir /b/s 02.pdf') do (ren "%%i" anexos.pdf)
Popd
Pause

Ya me dirás cómo van las cosas.

¿Qué pasó con esto? ¿Has probado lo que te sugería hace 6 días?

¡Gracias! Me funcionó de maravilla, ya con el programador de tareas de Windows lo ejecutó en automático a determinada hora.

En verdad muchas gracias saludos desde México

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas