Например вот это, примеры использования показаны, так что думаю, разберётесь. Время разбирается на HH MM SS через For, для использования в дальнейшем, вот так:
Код:

For /F "tokens=1,2,3 delims=:" %%A In ("13:01:26") Do (
Set HH=%%A
Set MM=%%B
Set SS=%%C
)
А это сами функции для работы со временем
Код:

@Echo Off
:: Устанавливаем время
Set HH=23
Set MM=15
Set SS=00
:: Демонстрация работы
:: ===================================
Echo Time = [%HH%:%MM%:%SS%]
Call :SerializeTime
Set TmpTime=%ErrorLevel%
Echo Serialized time = %TmpTime%
Call :DeserializeTime %TmpTime%
Echo Deserialized time = [%DHH%:%DMM%:%DSS%]
Call :TMinus %TmpTime% 9014
Call :DeserializeTime %ErrorLevel%
Echo Time - 2:30:14 = [%DHH%:%DMM%:%DSS%]
Call :TPlus %TmpTime% 9014
Call :DeserializeTime %ErrorLevel%
Echo Time + 2:30:14 = [%DHH%:%DMM%:%DSS%]
Pause&Exit
:: ===================================
::===Функции работы со временем в .bat====================================
:: Anonymous, 2010
:: v 1.3
:ParseTimestamp
:: Разбирает на составляющие временную метку формата ЧЧ:ММ:СС
:: Формат: Call :ParseTimestamp (время)
:: К примеру - Call :ParseTimestamp %time:~-0,8%
:: Вывод - в переменные HH MM и SS
For /F "tokens=1,2,3 delims=:" %%A In ("%1") Do (
Set HH=%%A
Set MM=%%B
Set SS=%%C
)
:SerializeTime
:: Сериализует время из переменных HH MM и SS
:: Вывод - в ErrorLevel
Call :Cut %HH% HH&Call :Cut %MM% MM&Call :Cut %SS% SS
Set /A STime=(HH*60*60)+(MM*60)+SS
Exit /B %STime%
:DeserializeTime
:: Десериализует время, приводит его к стандартному формату
:: Формат: Call :DeserializeTime (сериализованное время)
:: Вывод - в переменные DHH DMM и DSS
Set DHH=00&Set DMM=00&Set DSS=00
Set /A DHH=%1/60/60
Set /A DMM=(%1/60)-(DHH*60)
Set /A DSS=%1-(DHH*60*60)-(DMM*60)
If %DHH%==24 Set DHH=00
If %DHH% LSS 10 Set DHH=0%DHH%
If %DMM% LSS 10 Set DMM=0%DMM%
If %DSS% LSS 10 Set DSS=0%DSS%
Exit /B
:TMinus
:: Функция вычитания для сериализованного времени
:: Формат: Call :TMinus (сериализованное время) (сколько секунд отнять)
:: Вывод - в ErrorLevel
Set Result=
Set /A Result=%1-%2
If %2 GTR %1 (
Set /A Result=86400+%1-%2
)
Exit /B %Result%
:TPlus
:: Функция прибавления для сериализованного времени
:: Формат: Call :TPlus (сериализованное время) (сколько секунд прибавить)
:: Вывод - в ErrorLevel
Set Result=
Set /A Result=%1+%2
If %Result% GTR 86400 (
Set /A Result=%1+%2-86400
)
Exit /B %Result%
:Timer
:: Отсчитывает прошедшее с заданного момента время
:: Формат: Call :Timer (запомненное сериализованное время)
:: Вывод - в ErrorLevel
:: Если счетчик переходит границу суток, число дней возрастает на 1
:: Дни выводятся в переменную ED (и накапливаются) // да, знаю, что костыль и быдлокод
Set OTime=%1
If "%ED%"=="" Set ED=0
Call :ParseTimestamp %time:~-0,8%
Call :SerializeTime
Set CTime=%STime%
If %OTime% GTR %CTime% (
Set /A Timer=86400-%OTime%+%CTime%
Set /A ED+=1
) Else (
Set /A Timer=CTime-OTime
)
Exit /B %Timer%
:Timer2
:: Проверяет, прошел ли заданный промежуток времени
:: Формат: Call :Timer2 (запомненное сериализованное время) (промежуток в секундах)
:: Вывод - в ErrorLevel (только 0=промежуток истёк или 1=промежуток ещё не истёк)
Call :ParseTimestamp %time:~-0,8%
Call :SerializeTime
Call :TMinus %STime% %1
If %2 GTR %Result% Set Timer2=1&Exit /B 1
Set Timer2=0&Exit /B 0
:Cut
:: Убирание ведущих нулей и пробелов
:: Формат: Call :Cut (Двухзначное число) (Переменная, куда вывести резуьтат)
Set d=%1
If "%d:~,1%"=="0" Set %2=%d:~1%
If "%d:~,1%"==" " Set %2=%d:~1%
Exit /B
::========================================================================
А если не секрет, в чем сакральный смысл прибавления 15 секунд к времени из логов (судя по "Steam" - игры)?