...¿en Batch?. No puedes hacer algo así sin complicarte demasiado la vida y de forma innecesaria estrujándote el cerebro para idear operaciones aritméticas que resuelvan un problema fastidioso que sería bastante sencillo de resolver en cualquier otro lenguaje no tan limitado e inepto como es Batch. Pudiéndolo hacer en cualquier otro lenguaje que esté soportado nativamente por Windows, como VBS o PowerShell, deberías considerar esa idea...
De todas formas aquí te muestro un ejemplo para añadir minutos (solamente minutos) que puedes tratar de extender y adaptar a tus necesidades... pero es que no vale la pena molestarse en hacer algo así:
¿Para qué quieres hacer una operación de este tipo en un lenguaje como Batch?, no está pensado para ese tipo de cosas, cualquier pequeño problema en Batch se convierte en una resolución demasiado tediosa, o compleja, precisamente por que Batch es tan solo una herramienta diseñada para satisfacer la automatización de tareas cotidianas (tareas básicas) del usuario, esa es la función principal que debe cumplir, no trates a Batch como a un lenguaje de programación, para eso ya tienes a los demás lenguajes competentes que te proveerán de miembros
built-in para llevar a cabo todo tipo de operaciones programáticas con clases que representen una hora en el tiempo, con métodos para manipular (añadir, reducir, sumar, restar, etc... ) el valor del tiempo a tu antojo...
Te muestro un ejemplo en PowerShell / .NET Framework:
Script.ps1[Timespan]$curTime = ([DateTime]::Now).TimeOfDay
[Timespan]$newTime = ($curTime).Add([TimeSpan]::FromMilliseconds(50)) # Add 50 ms to the current time.
[Console]::WriteLine("Current Time........: " + $curTime.ToString("hh\:mm\:ss\:fff"))
[Console]::WriteLine("Current Time + 50 ms: " + $newTime.ToString("hh\:mm\:ss\:fff"))
[Console]::WriteLine("Press any key to exit...")
[Console]::ReadKey($true)
Exit(0)
Resultado de ejecución:
Current Time........: 22:36:47:281
Current Time + 50 ms: 22:36:47:331
Press any key to exit...
Saludos.