Как сказал Сквошман, внутри пакетных файлов вы не можете делать арифметику времени по умолчанию.
Однако вы можете создать функциональность внутри вашего пакетного файла самостоятельно с некоторым усердием.
Я думаю, вам нужно следующее начальные точки:
Обрезка временных меток: Вывод времени должен быть разделен на часы, минуты, секунды, наносекунды. Это можно сделать с помощью %variablename:~X,Y%
, где X - начальная позиция индекса (начиная с 0), а Y - длина, которую вы хотите вырезать (см. set /?
для документации).
Пример: Из 00:03:21.613
получить минут вы бы сделали что-то вроде set minutes_track=%input:~3,2%
.
Внутри для l oop вам нужно заранее поставить set input=%%f
. Прямой способ, такой как %%f:~3,2%
, невозможен (или я не знаю как).
Конечно, этот подход зависит от формата вашего вывода. Он основан на том факте, что все части дополняются начальными нулями и имеют длину только 2 цифры (кроме последней части, которая всегда имеет три цифры?). Если это не всегда так, вам нужно добавить больше logi c в анализ. Возможно, необходимо разделить двоеточие и точку (например, for /f "delims=:." %%p in (....) do ( ... )
; см. for /?
в этом случае).
Добавление времени с переносом: Вы можете использовать " Операторы mod или modulo "%
" и "Division" /
для суммирования суммирования по 60
(в секундах). См. set /?
и if /?
для источников документации.
Обычно вы рассчитываете общее количество минут и секунд следующим образом:
set /a seconds_new=(%seconds_total% + %seconds_track%) % 60
set /a minutes_new=(%minutes_total% + (%seconds_new% / 60)
set /a seconds_total=%seconds_new%
set /a minutes_total=%minutes_total% + %minutes_new%
Разбивка :
mod дает вам остаток, например, 79 % 60
приведет к 19
, тогда как
div даст вам полный результат деления в целых числах, например: 79 / 60
доходность 1
.
. При этом вы получите желаемые значения: «79
секунд - 1
минут и 19
секунд», которые вы можете сложить для общего количества time.
То же самое относится и к вычислениям часов из минут, если вы также хотите добавить эту функцию. А если вы возьмете % 1000
и / 1000
, вы даже можете добавить наносекунды к секундам заранее. Также следует учитывать очень длинные треки, в которых есть часовая часть. Я оставляю это как упражнение для создания вашего скрипта;)
Важно:
Поскольку эти вычисления будут выполняться внутри для l oop в вашем случае, не забудьте использовать задержку Разверните переменные и замените %variable%
на !variable!
везде в моих примерах выше (см. setlocal /?
).