Entradas

Mostrando las entradas de febrero, 2021

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