elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Renombrar con cmd o .bat
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Renombrar con cmd o .bat  (Leído 5,989 veces)
danihomer

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Renombrar con cmd o .bat
« en: 24 Marzo 2017, 20:51 pm »

Buenas a todos
 
Tengo unos archivos para renombrar, archivos que caen en carpetas y subcarpetas. Son de este estilo:

Libro_hoy_interior_01F.pdf
Libro_hoy_interior_01B.pdf
Libro_hoy_interior_02F.pdf
Libro_hoy_interior_02B.pdf

Revista_hoy_interior_01F.pdf
Revista_hoy_interior_01B.pdf

y asi sucesivamente, siempre tienen la variable de F.pdf y B.pdf
yo querria renombrar esa parte F.pdf por _Cara.pdf y B.pdf por _Dorso.pdf
Necesito busque y reemplace en subdirectorios, los archivos caen aleatoriamente en unos cuantos.
Una vez renombrados habría que moverlos a otras carpetas, eso lo tengo solucionado, pero antes necesito ese renombre.

ren C:\Users\Administrator1\Desktop\carpeta1\*B.pdf *_Dorso.pdf

Con ese comando basico, lo renombra pero elimina los numero, y necesito que lo respeten.

ren C:\Users\Administrator1\Desktop\carpeta1\*01F.pdf *01_Cara.pdf
ren C:\Users\Administrator1\Desktop\carpeta1\*02F.pdf *02_Cara.pdf

Si pongo eso, lo renombra bien, pero solo en esa carpeta, podria poner las secuencia de numeros hasta donde sea, no es problema, pero como podría buscar en subdirectorios con esos comandos

gracias
salu2




En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.350


Ver Perfil
Re: Renombrar con cmd o .bat
« Respuesta #1 en: 25 Marzo 2017, 00:40 am »


ren C:\Users\Administrator1\Desktop\carpeta1\*B.pdf *_Dorso.pdf

Con ese comando basico, lo renombra pero elimina los numero, y necesito que lo respeten.

ren C:\Users\Administrator1\Desktop\carpeta1\*01F.pdf *01_Cara.pdf
ren C:\Users\Administrator1\Desktop\carpeta1\*02F.pdf *02_Cara.pdf

Si pongo eso, lo renombra bien, pero solo en esa carpeta, podria poner las secuencia de numeros hasta donde sea, no es problema, pero como podría buscar en subdirectorios con esos comandos
Dado el nombre del fichero como ejemplo: Libro_hoy_interior_01F.pdf
Debes poner un comodín por cada letra que deba respetarse... NOTA: solo te irá bién si todos los ficheros tienen el mismo tamaño en cuanto a caracteres, y sería esto (para el ejemplo propuesto)
ren c:\micarpeta\*F.pdf ?????????????????????_Cara.pdf
el resultado será este: Libro_hoy_interior_01_Cara.pdf

Si cada fichero tiene su tamaño propio o bien en la carpeta hay diferentes tamaños de ficheros y /o diferentes nombres, entonces podrían ser mal renombrados, en tal caso ordenalos en diferentes carpetas, para poder tratar todos los que son similares de una sola vez. Si procedes desde con orden y lógica, podrías conseguirlo, si exiges que los últimos caracteres antes de la extensión la fijas, o bien si son diferentes desde el comienzo... por ejemplo:
Libro_hoy_interior_01F.pdf y Revista_hoy_interior_01F.pdf son diferentes, luego aunque estén en la misma carpeta, puedes crear un comando para cada caso

En vez de este:
*F.pdf ?????????????????????_Cara.pdf
paralos 'libro' usar este:
L*F.pdf ?????????????????????_Cara.pdf
y para los 'revista', usar éste otro:
R*F.pdf ???????????????????????_Cara.pdf
Nota que cada comodín '?' justifica solo a un carácter, luego deben ponerse tantos como se quiera que permanezcan en destino...

Y si la cosa es demasiado complicada, o bien te no aciertas a poner el comando adecuado, entonces es mejor que recurras a un programa específico que te ayude a renombrar de forma masiva (por ejemplo el viejo 'Magic file Renamer', tiene opciones para casi todo), la shell de win2, no tiene demasiadas opciones...


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.809



Ver Perfil
Re: Renombrar con cmd o .bat
« Respuesta #2 en: 25 Marzo 2017, 08:47 am »

siempre tienen la variable de F.pdf y B.pdf

Entonces es suficiente con hacer un substring para determinar el último caracter del nombre de archivo y así poder simplificar el procedimiento de renombrado de archivos.

El siguiente código que he escrito hace todo lo que pides:

Código
  1. @Echo Off & SetLocal EnableDelayedExpansion
  2.  
  3. Set "frontWord=_Cara"
  4. Set "backWord=_Dorso"
  5.  
  6. For /R %%# In ("*_0?F.pdf", "*_0?B.pdf") Do (
  7.    Set "srcFilename=%%~n#"
  8.    Set "lastChar=!srcFilename:~-1!"
  9.    If /I "!lastChar!" EQU "F" (Set "dstFilename=!srcFilename:~0,-1!%frontWord%")
  10.    If /I "!lastChar!" EQU "B" (Set "dstFilename=!srcFilename:~0,-1!%backWord%")
  11.    Echo Renaming "%%~nx#" to "!dstFilename!%%~x#"...
  12.    Rename "%%~f#" "!dstFilename!%%~x#"
  13. )
  14.  
  15. Pause & Exit /B 0

¡Saludos!
« Última modificación: 25 Marzo 2017, 08:49 am por Eleкtro » En línea

danihomer

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Renombrar con cmd o .bat
« Respuesta #3 en: 25 Marzo 2017, 11:20 am »

Que bueno lo hace, incluso en subcarpetas, solo una cosa que no entiendo.

A veces este tipo de nombres los numeros pasan de 09 a 10, 11, 12 etc

Libro_hoy_interior_10F.pdf
Libro_hoy_interior_10B.pdf
Libro_hoy_interior_11F.pdf
Libro_hoy_interior_11B.pdf

Revista_hoy_interior_19F.pdf
Revista_hoy_interior_19B.pdf

En estos casos no lo esta renombrando, es como si no hubiera archivos, hasta el 09 sin problema.
Tendrá solución??

Gracias
salu2
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.809



Ver Perfil
Re: Renombrar con cmd o .bat
« Respuesta #4 en: 25 Marzo 2017, 11:50 am »

A veces este tipo de nombres los numeros pasan de 09 a 10, 11, 12 etc

En estos casos no lo esta renombrando, es como si no hubiera archivos, hasta el 09 sin problema.
Tendrá solución??

Sencillamente adapta la expresión/patrón de búsqueda a tus necesidades...

Código
  1. For /R %%# In ("*_??F.pdf", "*_??B.pdf") Do (...)

O bien:
Código
  1. For /R %%# In ("*_0?F.pdf", "*_0?B.pdf", "*_1?F.pdf", "*_1?B.pdf") Do (...)
...siendo este último el que ofrece mayor nivel de certeza/seguridad.

Saludos.
En línea

danihomer

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Renombrar con cmd o .bat
« Respuesta #5 en: 25 Marzo 2017, 12:46 pm »

Gracias de verdad

Esos ultimos codigos no hacian nada, pero en el primero puse 2 ?? y solucionado, porque lo que seguro q nunca hay son 3 numeros

gracias
salu2
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.809



Ver Perfil
Re: Renombrar con cmd o .bat
« Respuesta #6 en: 25 Marzo 2017, 13:14 pm »

Esos ultimos codigos no hacian nada, pero en el primero puse 2 ?? y solucionado, porque lo que seguro q nunca hay son 3 numeros

Tomando este nombre de archivo como ejemplo: "Libro_hoy_interior_10F.pdf", el patrón de búsqueda "*_1?F.pdf" te debería funcionar.

Lo que hace el símbolo del interrogante (?) es capturar cero o un caracteres, es decir, que si has usado dos interrogantes de la siguiente manera como me das a enteder "*_??F.pdf" entonces te podrá dar falsos positivos por ejemplo si tuvieras archivos con estos nombres: "Libro_hoy_interior_F.pdf" o "Libro_hoy_interior_XF.pdf" o "Libro_hoy_interior_XXF.pdf", pero mientras seas consciente de eso y lo tengas controlado entonces no habrá problema.
Si quieres perfeccionar el algoritmo de búsqueda entonces habría que recurrir al comando externo FINDSTR.exe utilizando una expresión regular, pero esto no te lo recomiendo por que... bueno, esto es Batch; inicializar el proceso FINDSTR.exe por cada achivo en la iteración resultaría en un impacto muy negativo de velocidad; si se busca la eficiencia entonces es mejor recurrir a cualquier otro lenguaje de programación.  

Me alegro de que lo hayas solucionado.

¡Saludos!
« Última modificación: 25 Marzo 2017, 14:15 pm por Eleкtro » En línea

danihomer

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Renombrar con cmd o .bat
« Respuesta #7 en: 25 Marzo 2017, 14:49 pm »

El patron será fijo, me refiero, siempre habrá numeros y letras, sean 01B o 25F, sin numeros no haría lo que tiene que hacer después.
El cambiar la F y la B es para automatizar otros procesos despues.

Gracias de verdad
salu2
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
renombrar un archivo
Programación Visual Basic
Robokop 5 2,479 Último mensaje 28 Diciembre 2005, 02:36 am
por Robokop
renombrar archivos bat « 1 2 »
Scripting
charlyta 10 14,185 Último mensaje 12 Marzo 2012, 18:35 pm
por -- KiLiaN --
renombrar archivos
Scripting
asdexiva 2 3,141 Último mensaje 8 Julio 2013, 23:40 pm
por asdexiva
renombrar ficheros con distintos nombres
Scripting
500DRIFT 3 4,483 Último mensaje 12 Agosto 2022, 00:09 am
por 500DRIFT
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines