Ms-Dos - Bat para saltear nivel de carpetas

 
Vista:
sin imagen de perfil

Bat para saltear nivel de carpetas

Publicado por marcos (7 intervenciones) el 14/08/2022 15:31:03
Hola.
Estoy metido en un problema que no consigo resolver.
Tengo una carpeta principal que a su vez contiene una larga serie de carpetas de nombres válidos en cuyo interior y en cada una se encuentra un archivo incorrecto al que debo renombrar con el mismo nombre de la carpeta que lo contiene. Hasta aquí consigo hacerlo sin problemas gracias a una línea de un batch que modifiqué:

for /r %%F in (*.mkv) do @for %%A in ("%%F\..") do ren "%%F" "%%~nxA.mkv"

Lo que hago es situarme dentro de la carpeta principal para ejecutar el bat que contiene el comando.

El inconveniente surge cuando algunos de los archivos de marras que necesito renombrar se encuentran a su vez dentro de otra subcarpeta cuyo nombre difiere del de las carpetas de nombres válidos.
Es entonces cuando el comando FOR falla y altera de forma indebida el renombrar, pues toma como válido el nombre de esta última carpeta y, obviamente, planta en el archivo el nombre equivocado. Aunque para el programador avezado suene redundante, necesitaría que el comando FOR -o bien alguno complementario- tome el nombre de las carpetas válidas del nivel anterior.

Espero haber conseguido explicarme. De no ser así, proporcionaré una imagen discreta en forma de árbol.

Nota: tanto la unidad como la carpeta principal me son indiferentes.

Desde ya quedo muy agradecido por cualquier sugerencia o ayuda.
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