Ms-Dos - Renombrar archivos con diferentes nombres .BAT

 
Vista:

Renombrar archivos con diferentes nombres .BAT

Publicado por Juan (6 intervenciones) el 25/10/2017 21:29:49
Hola, estoy intentando renombrar archivos que tienen diferentes nombres pero no termino ver el codigo correcto, he visto algunos post que se han publicado pero no terminan de ser como intento que queden los archivo.

Como digo archivos que están en una carpeta tienen diferentes nombre y con extensión PDF, y quiero renombrarlos con la extensión EXE, pero que se queden con el mismo nombre.

Me puede ayudar alguien con el código ?

Gracias.
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
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Renombrar archivos con diferentes nombres .BAT

Publicado por Antoni Masana (811 intervenciones) el 26/10/2017 10:04:18
Te puedo ayudar pero debes ser un poco mas explicito.

De entrada no tiene ningún sentido cambiar la extensión de un archivo PDF (sigla del inglés Portable Document Format, «formato de documento portátil») a EXE (de la abreviación del inglés executable, que se traduce en ejecutable) porque el formato de fichero sigue siendo el mismo.

Un fichero de texto (TXT, ASC, PRG, C, COM, BAS, FRM, etc) no se convierte en ejecutable renombrandolo ( EXE ).

Saludos.
\\//_
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

Renombrar archivos con diferentes nombres .BAT

Publicado por Juan (6 intervenciones) el 26/10/2017 12:24:17
Hola Antoni, gracias por responder.

Si que tiene sentido, veras..... tengo un archivo EXE que si pongo adjunto al correo, no deja enviarlo, es normal, por temas de seguridad, por lo que le cambio la extensión por un PDF, me da igual que sea PDF, DOC, TXT, el caso es que al cambiar la extensión si deja enviarlo, ahora que esto escribiendo esto, no he probado a enviarlo sin extensión.

Este ejecutable, es un programa de actualización que lo envío a varios destinatarios, algunos de ellos no están muy puestos en informática, y a pesar de enviarles las instrucciones de como lo tienen que hacer, para la próxima vez que le vuelvo a enviar otro archivo, ya no se acuerdan.

Así que pensé en ésto para que solo tengan que poner el archivo que se reciba por correo junto con este BAT, para que solo tengan que ejecutar el BAT y asunto resuelto.

Como te comento el archivo cada vez tiene un nombre diferente, y la longitud del nombre también puede cambiar.


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
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Renombrar archivos con diferentes nombres .BAT

Publicado por Antoni Masana (811 intervenciones) el 27/10/2017 10:10:57
Hola Juan,

Esto que cuentas si que tiene todo el sentido pero busca una extensión que lleve a menos error.

Otras extensiones: .ex_ - .tsk - .eje - .fdp - .pd_ - .xee - ._exe

Un ejemplo:

1
2
3
4
@echo off
Dir *.exe /B >file.tmp
FOR /F "delims==" %%a IN (file.tmp) DO REN "%%a" "%%~na.ex_"
DEL file.tmp

Otra forma mas a lo grande:

1
ren *.exe *.ex_

Saludos.
\\//_
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

Renombrar archivos con diferentes nombres .BAT

Publicado por Juan (6 intervenciones) el 27/10/2017 10:50:50
Gracias nuevamente, desde luego muchas veces lo tenemos delante y es mas sencillo de lo que parece, pero me puse a buscar otras soluciones, y a complicarme con el codigo, jeje

Estaba probando este otro, que no terminaba de cuadrar porque tiene de limite en el nombre del archivo 20 caracteres, y claro si un archivo tiene 10 pues creo 10 espacios mas en en nombre.

1
2
3
4
5
6
7
8
9
@echo off
for /R %%a in (*.pdf) do (set rutarchiv=%%a&set nomarchiv=%%~na&set extension=.exe&call :renombrar)
goto:eof
 
:renombrar
set nomarchiv=%nomarchiv:~0,20%
ren  "%rutarchiv%" "%nomarchiv%%extension%"
echo Renombrado "%rutarchiv%" - "%nomarchiv%%extension%"
exit


y como bien has puesto, mas sencillo no puede ser para renombrar las extensiones.

1
ren *.pdf *.exe


Lo que no entiendo muy bien es el ejemplo que has puesto, porque borrar un archivo con nombre DEL file.tmp

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
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Renombrar archivos con diferentes nombres .BAT

Publicado por Antoni Masana (811 intervenciones) el 27/10/2017 22:38:14
En el ejemplo que te he puesto hago un una lista de ficheros sin datos (fecha, hora, tamaño, etc) y los guardo en un fichero temporal
Con el FOR trato cada uno de los ficheros y después borro el temporal.

El nombre file.tmp es un nombre que me invento para un fichero temporal.

¿Y por que un fichero temporal?

Para solucionar uno de los grandes problemas de cierta parte de la informática con los nombres de ficheros y ese problema es los ESPACIOS en el nombre.

Desde la linea de comándos un nombre de fichero con espacios trae muchos problemas y esas cuatro líneas de código pretenden incluir esos ficheros.

En tu código es mejor asi:

1
2
3
4
5
6
7
8
9
10
11
12
@echo off
set extension=.exe
FOR /R %%a in (*.pdf) do call :renombrar %%a %%~na
goto:eof
 
:renombrar
   set rutarchiv=%1
   set nomarchiv=%2
   set nomarchiv=%nomarchiv:~0,20%
        rename     "%rutarchiv%"   "%nomarchiv%%extension%"
   echo Renombrado "%rutarchiv%" - "%nomarchiv%%extension%"
   goto:eof

Pero para mi gusto le sombra la línea:

1
set nomarchiv=%nomarchiv:~0,20%

Y si le quitas esta linea se puede simplificar así

1
2
3
4
5
6
7
8
9
@echo off
set extension=.exe
FOR /R %%a in (*.pdf) do call :renombrar %%a %%~na
goto:eof
 
:renombrar
        rename      %1   %2%extension%
   echo Renombrado  %1 - %2%extension%
   goto:eof

Las comillas sobran porque solo tienen sentido cuando el nombre del fichero PDF tiene espacios y este BAT no es capaz de tratarlos.

Otro detalle este BAT: mira el directorio actual y todos los sub-directorios que cuelgan de él.
Para incluir esta opción en mi BAT solo se tendría que añadir el parametro /S al comando DIR.

Saludos.
\\//_
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

Renombrar archivos con diferentes nombres .BAT

Publicado por Juan (6 intervenciones) el 28/10/2017 08:25:04
Gracias Antoni, desde luego si con los dos códigos se consigue lo mismo, esta claro es mas sencillo éste código
1
ren *.pdf *.exe

Y el nombre de los archivos si que suelen contener espacios, el nombre suele tener entre 19 y 21 caracteres.


Salu2.
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

Renombrar archivos con diferentes nombres .BAT

Publicado por Juan (6 intervenciones) el 28/10/2017 08:57:07
Hola de nuevo, no puedo editar el post anterior, asi que creo uno nuevo......

Estoy probando con el otro codigo, pero no llega a renombrar el pdf, te pongo el codigo, solo le he puesto un mensaje por si no encuentra el pdf, y otro mensaje cuando ha renombrado el pdf.

Le he puesto un "Pause", para comprobar por donde va y que mensaje muestra en la ventana de comandos

1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
set extension=.exe
FOR /R %%a in (*.pdf) do call :renombrar %%a %%~na
   msg * /W "              No se encontraron archivos PDF"
pause
goto:eof
 
:renombrar
        rename %1 %2%extension%
   echo Renombrado %1 - %2%extension%
   msg * /W "              Archivos PDF Renombrados"
pause
   goto:eof

y cuando el archivo tiene espacios no funciona bien este codigo


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
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Renombrar archivos con diferentes nombres .BAT

Publicado por Antoni Masana (811 intervenciones) el 28/10/2017 22:06:33
Como ya te comente este código no es capaz de tratar los ficheros con espacios.

Para ver que es lo que pasa cambia solo la primera línea:

1
2
3
4
5
6
7
8
9
10
11
12
13
@echo ON
set extension=.exe
FOR /R %%a in (*.pdf) do call :renombrar  "%%a"  "%%~na"
   msg * /W "              No se encontraron archivos PDF"
pause
goto:eof
 
:renombrar
        rename %1 %2%extension%
   echo Renombrado %1 - %2%extension%
   msg * /W "              Archivos PDF Renombrados"
pause
   goto:eof


El la línea del FOR hay que poner los parametros del CALL entre comillas y ya funciona correctamente:

1
FOR /R %%a in (*.pdf) do call :renombrar    "%%a"    "%%~na"

Saludos.
\\//_
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

Renombrar archivos con diferentes nombres .BAT

Publicado por Juan (6 intervenciones) el 29/10/2017 08:11:47
Una vez mas gracias Antoni ahora si funciona, lo único que he cambiado ha sido el ultimo goto:eof del final del codigo por un Exit porque he visto que cuando se ejecuta el bat cuando hay un archivo pdf lo renombra y muestra el mensaje "Archivos PDF Renombrados", pero luego vuelve a mostrar el aviso "No se encontraron archivos PDF".


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