Valores de script em lote não estão mudando?

Eu tenho um script em lotes, mas por qualquer motivo, uma vez que um valor é definido no meu loop foor, ele persiste e não é atualizado. Meus valores: 'totalTime' e 'totalHours' no meu loop for sempre o mesmo valor da primeira vez em que 'converttime foi chamado. Verifiquei que a função 'converttime' está obtendo os valores corretos, mas não sei como obter os valores a serem alterados no loop for.

Meu código é assim:

@echo off

set duration=01:25:45

call :converttime %duration%

set /A duration=%totalHours%+%totalMins%

FOR /F "tokens=2 delims=#" %%i IN (subtitle.txt) DO (
    call :converttime %%i
    set /A totalTime=%totalMins%+%totalhours%
    echo %totalTime%
)
endlocal
goto :eof

:converttime
set mytime=%1
set hour=%mytime:~0,2%
set minute=%mytime:~3,2%
set seconds=%mytime:~6,7%

if NOT "%minute%"=="" (
    SET /A totalMins=%minute%*60000
)

if NOT "%hour%"=="~0,2" (
    set /A totalhours=%hour%*3600000    
)

A saída é:

4500000 4500000 4500000 4500000 4500000 4500000

Quando deveria ser algo como:

2500000 3520000 1450000

Alguma ideia??

questionAnswers(1)

yourAnswerToTheQuestion