[BATCH] (RESUELTO) AYUDA RENOMBRADOR AVANZADO

Iniciado por 54n4r0r, 9 Abril 2016, 17:20 PM

0 Miembros y 1 Visitante están viendo este tema.

54n4r0r

Haber antes que nada no es un renombrador "normal" como tal...

El problema es el siguiente:

Tengo archivos dentro de una carpeta register\data en la ubicación del batch, los archivos son *.jpg y estan enumerados desde el 0 hasta el infinito. Lo que necesito es renombrarlos al revés, de tal manera que si hay 100 archivos irán desde el numero 0 al 99, el 99 pasaría a ser el numero 0, el 98 el numero 1, el 97 el numero 2 hasta el 0 que quedaría siendo el numero 99.

Luego de buscar información al respecto aún no he logrado resolver mi problema, sin más pude crear el siguiente código:


@echo off
set /a count=0
REM Coloco de valor -1 para cuando inicie el for se ponga en 0
set /a ren=-1
REM Aqui solo cuento la cantidad de archivos
for %%x in ("%~d0%~p0\register\data\*.jpg") do (set /a count+=1)
setlocal
for %%i in ("%~d0%~p0\register\data\*.jpg") do (
REM Si la cuenta llega a 100 le resto 1 para tener el valor de 99
set /a count=%count%-1
REM Aqui tendria el valor de 0
set /a ren=%ren%+1
REM De tal manera que el archivo 99 se renombraria en teoria por el 0
ren "%~d0%~p0\register\data\%count%.jpg" "%ren%.jpg"
)
endlocal
REM me muestra el total de archivos
echo en total hay %count% archivos
pause
exit


Ahora bien, el código me salta con errores de NO SE ENCUENTRA EL ARCHIVO habiendo 1, 2 o mas archivos en la carpeta especificada. Otro dato interesante es que si funcionara correctamente en teoria debería saltar error dado que al renombrar el archivo 99 por 0, ya hay un archivo q se llama 0, pienso resolverlo moviendo los archivos pero igual quedo suscrito a cualquier sugerencia.

MUCHAS GRACIAS DE ANTEMANO, en espera de su valiosa ayuda.

54n4r0r

Con el siguiente código he logrado solventar mi problema.


@echo off
set count=0
set ren=-1
for %%x in ("%~d0%~p0\register\data\*.jpg") do (
set /a count+=1
)
setlocal
for %%i in ("%~d0%~p0\register\data\*.jpg") do (
set /a count-=1 & set /a ren+=1
) & call :ren
endlocal
echo En total hay %count% archivos
pause > nul
exit

:ren
echo count=%count% , ren=%ren%
pause > nul
set rename=r%ren%
ren "%~d0%~p0\register\data\%count%.jpg" "%rename%.jpg"
goto :eof