Cómo cambiar el nombre de los episodios por lotes

Cómo cambiar el nombre de los episodios por lotes

Tengo miles de episodios a los que quiero cambiarles el nombre y todos tienen un formato similar.

Esto llevaría mucho tiempo si tuviera que hacerlo manualmente.

Entonces necesitaré una forma sencilla de cambiar el nombre por lotes de los siguientes ejemplos:

[Fuente]Nombre de la serie_-_001_Nombre del episodio_[480p][DVD][Cargador]

[Fuente]Nombre de la serie_-_010_Nombre del episodio_[720p][BD][Cargador]

[Fuente]Nombre de la serie_-_100_Nombre del episodio_[1080p][BD][Cargador]

para sólo:

Nombre de la serie Episodio 1 - Nombre del episodio

Nombre de la serie Episodio 10 - Nombre del episodio

Nombre de la serie Episodio 100 - Nombre del episodio

¿Cómo podría lograr esto?

Respuesta1

Mantendría la duración constante del número de episodio por motivos de clasificación.

¿Qué pasa con las extensiones (mi one liner las conserva)?

En la línea de comando:

for %F in ([*) do @for /f "tokens=2-4 delims=-_[]" %A in ("%F") do @echo Ren "%~fF" "%A Episode %B - %C%~xF"

Salida de muestra:

Ren "Q:\Test\2018\04\05\[Source]SeriesName_-_001_EpisodeName_[480p][DVD][Uploader]" "SeriesName Episode 001 - EpisodeName"
Ren "Q:\Test\2018\04\05\[Source]SeriesName_-_100_EpisodeName_[1080p][BD][Uploader]" "SeriesName Episode 100 - EpisodeName"
Ren "Q:\Test\2018\04\05\[Source]SeriesName_-_010_EpisodeName_[720p][BD][Uploader]" "SeriesName Episode 010 - EpisodeName"

En un archivo por lotes, duplique todos los signos de porcentaje.

El primero itera todos los elementos que comienzan con a. [
El segundo divide el nombre en todos los delimitadores especificados (los adyacentes cuentan como solo uno) tomando solo el segundo al cuarto. El comando ren solo se repite por razones de seguridad. Elimine el eco si la salida es correcta.

EDITAR:Esta versión del archivo por lotes elimina los ceros a la izquierda:

:: SU1310869.cmd
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
:: cd /d "X:\folder\episodefiles
for %%F in ([*) do @for /f "tokens=2-4 delims=-_[]" %%A in ("%%F") do (
  set /a Num=1%%B - 1000
  @echo Ren "%%~fF" "%%A Episode !Num! - %%C%%~xF"
)

información relacionada