Ms-Dos - Renombrar ficheros con un script

 
Vista:
Imágen de perfil de Luis
Val: 21
Ha aumentado 1 puesto en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Renombrar ficheros con un script

Publicado por Luis (9 intervenciones) el 01/02/2021 08:59:08
Hola,
Quiero elaborar un fichero CMD, del que ya tengo buena parte hecha y funcionando, una rutina que me renombre unos ficheros cuya estructura de nombre es:

Nombre_fichero_dd_mm_aaaa.xls

Y quiero obtener:

aaaammdd_nombre_fichero.xls

¡Muchas 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.438
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Renombrar ficheros con un script

Publicado por Antoni Masana (712 intervenciones) el 01/02/2021 10:40:28
Es BAT para renombrar:

1
2
3
4
5
6
@echo off
for %%a in (*.xls) do echo %%~na_%%~xa>temp.tmp
for /F "delims=_ tokens=1-6" %%a in (Temp.tmp) do (
    echo ren %%a_%%b_%%c_%%d_%%e%%f %%e%%d%%c_%%a_%%b%%f
)
del temp.tmp

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
Imágen de perfil de Luis
Val: 21
Ha aumentado 1 puesto en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Renombrar ficheros con un script

Publicado por Luis (9 intervenciones) el 01/02/2021 12:27:08
Gracias por tu ayuda, pero estoy teniendo problemas con los nombres de ruta.
Hay una carpeta cuyo nombre lleva acento.
Si abro el script con NOTEPAD o con NOTEPAD++ el nombre de carpeta aparece correctamente: informática
Si ejecuto el script desde ventana de comando, ms-dos no puede abrir los ficheros porque aparecen símbolos raros en lugar de la i acentuada.
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 Luis
Val: 21
Ha aumentado 1 puesto en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Renombrar ficheros con un script

Publicado por Luis (9 intervenciones) el 01/02/2021 13:46:09
El script se detiene con el primer nombre de fichero,
He desactivado la última instrucción del temp.tmp para ver su contenido y puedo ver el problema.
El problema es que intenta renombrar un fichero llamado:

Nombre_fichero_dd_mm_aaaa_.xls

en lugar de:

Nombre_fichero_dd_mm_aaaa.xls

y claro, no lo encuentra.
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.438
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Renombrar ficheros con un script

Publicado por Antoni Masana (712 intervenciones) el 01/02/2021 21:18:06
Ese no es el problema.

En primer lugar hay que quitar el ECHO para que renombre.

1
2
3
4
5
6
@echo off
for %%a in (*.xls) do echo %%~na_%%~xa>temp.tmp
for /F "delims=_ tokens=1-6" %%a in (Temp.tmp) do (
    echo ren %%a_%%b_%%c_%%d_%%e%%f %%e%%d%%c_%%a_%%b%%f
)
del temp.tmp

Si ejecutas esto:

1
2
3
4
5
6
@echo off
for %%a in (*.xls) do echo %%~na_%%~xa>temp.tmp
for /F "delims=_ tokens=1-6" %%a in (Temp.tmp) do (
    echo (%%a) _ (%%b) _ (%%c) _ (%%d) _ (%%e) _ (%%f)
)
del temp.tmp

El resultado tiene que ser esto:

1
(Nombre) _ (fichero) _ (dd) _ (mm) _ (aaaa) _ (.xls)

Los guiones bajos en el RENAME los añado yo tanto en el origen como en el destino:

1
ren  %%a_%%b_%%c_%%d_%%e%%f   %%e%%d%%c_%%a_%%b%%f

En el FOR con la opción /F utilizo el delimitador "delims=_ para separar los textos y le indico después del igual que el guion bajo es el delimitador.

Si no te funciona envíame una lista de ficheros para probarlo, solo los nombres ya los creare yo.

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
Imágen de perfil de Luis
Val: 21
Ha aumentado 1 puesto en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Renombrar ficheros con un script

Publicado por Luis (9 intervenciones) el 02/02/2021 07:17:05
Lo primero, pido diculpas porque no dí correctamente la estructura de los nombres de fichero.
Esto sería exactamente lo que quiero:

nombre inicial: AB_CDE_EFGH_IJK_dd_mm_aaa.xls
nombre final: aaaammdd_EFGH.xls

Este código al menos lograba sacar el nombre inicial bien:

1
2
3
4
5
6
@echo off
for %%a in (*.xls) do echo %%~na%%~xa>temp.tmp
for /F "delims=_. tokens=1-8" %%a in (temp.tmp) do (
	echo ren %%a_%%b_%%c_%%d_%%e_%%f_%%g.%%h %%c_%%g%%e%%f.%%h
)
rem del temp.tmp

Muchas gracias por tu interés
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