Renombar archivos de manera secuencial [MS-DOS]

Tengo un montón de archivos mp4 que quiero renombrar de manera secuencial. Son capturas de gameplays de videojuegos de mi xbox, por lo cual ni el nombre de archivo ni la fecha (que se indica en el nombre de archivo) me importa, pero quiero llevar un control de cada archivo; y es más fácil buscar un archivo '00001.mp4' en lugar de 'Minecraft 2020-06-10 23-18-05.mp4'.

El script se divide en dos partes principales: 

  • El contador - hace un bucle por cada archivo especificado por el comando dir y aumenta el valor de la variable _seq en uno (que se inicializa en cero; enableextensions y enabledelayedexpansion permiten que se pueda consultar el valor actual la variable _seq adentro del bucle, en lugar del final) y llama la subrutina :sub enviando el valor del contador junto con el nombre del archivo para renombrarlo.
  • Subrutina :sub- se encarga de darle formato al contador (convirtiendo '1' en '00001') y hace el renombramiento.

El script se puede cambiar el tipo de archivo a renombrar editando el patrón de busqueda del comando dir.

@ECHO OFF
@SETLOCAL enableextensions enabledelayedexpansion
::Activa el uso UTF-8 (Palabras con Acentos)
chcp 65001 

SET /a _seq = 0

for /f "tokens=*" %%f in ('dir /b *.mp4') do (
	SET /a "_seq+=1"
	CALL :sub !_seq! "%%f"
)

exit /b

:sub
	SET "_TMP=00000%1"
	SET "_TMP=%_TMP:~-5%"
	REN %2 %_TMP%.mp4 

Comentarios

Entradas más populares de este blog

Lista de Regex comunes en PHP

Instalar y Cofigurar Xdebug en XAMPP y Visual Studio Code

Archivo XML de configuración de FileZilla