Renombrar archivos de acuerdo con la carpeta en la que se encuentran

3

Tengo cientos de carpetas con nombres de películas. En cada carpeta hay un .mkvarchivo (o .avi, .mp4) con un nombre diferente. En cada carpeta hay un folder.jpg.

Me gustaría cambiar el nombre de cada archivo de video para que lleve el nombre de su carpeta principal. folder.jpgSin embargo, debe permanecer sin cambios.

Por ejemplo, la estructura de la carpeta es así:

 - Movies/Stirb Langsam 1/stlg1.mkv
 - Movies/Stirb Langsam 2/stlg2.mkv
 - Movies/Star Wars 1/hhgdtebds.mkv
 - Movies/Star Wars 2/stwa2.mkv

Y debería ser:

 - Movies/Stirb Langsam 1/Stirb Langsam 1.mkv
 - Movies/Stirb Langsam 2/Stirb Langsam 2.mkv
 - Movies/Star Wars 1/Star Wars 1.mkv
 - Movies/Star Wars 2/Star Wars 2.mkv

Por el momento uso Windows 7 para eso. Sería bueno si uno de los gurús de las secuencias de comandos me pudiera ayudar.

Andreas
fuente

Respuestas:

1

Guarde esto como un archivo por lotes en la raíz de su árbol:

@echo off
for /r /d %%x in (*) do (
 pushd "%%x"
 echo %%x
 for /F "delims=" %%i in ("%%x") do (
  ren *.mkv "%%~ni.mkv" 2> NUL
  ren *.avi "%%~ni.avi" 2> NUL
  ren *.mp4 "%%~ni.mp4" 2> NUL
 )
 popd
)

Descargo de responsabilidad: no soy responsable de ningún daño causado.

Aunque lo he probado en la lista que proporcionó, le recomiendo que haga una copia de seguridad de los archivos antes de ejecutar el archivo por lotes.

Gnubie
fuente
Por cierto, mi script se basó en las respuestas a estas preguntas: stackoverflow.com/questions/2043869/… y stackoverflow.com/questions/3432851/…
Gnubie
Gracias, el script funcionó para archivos sin un espacio en blanco y sin punto en el nombre. Encontré una herramienta que me ayudó con el resto. << renamer avanzado >>
Andreas