Самый простой способ - поле миллисекунд всегда будет состоять из двух цифр: %_TIME:~0,-3%
Переводит, чтобы обрезать первые 0 символов, затем сохранить до (размер строки - 3) символов. Который оторвал бы .07
в вашем примере. На самом деле, это всегда должно работать: я только что понял, что вы используете встроенную переменную% time% (учит меня читать), которая всегда должна возвращаться с двузначным значением «мс».
Если ваши миллисекунды могут иметь разное количество цифр (например, 0.1
вместо 0.10
), потребуется какая-то команда поиска строки. И вот оно:
Хорошо, это кажется хакерским ... но это командная строка Windows, так что, эй. Это обрежет точку и все после нее, поэтому будет работать независимо от того, сколько цифр точности соответствует вашему значению мс (например, 0.1
вместо 0.10
).
SetLocal EnableDelayedExpansion
set _time=%time%_EndOfStringMarker
set __DotToEnd=%_time:*.=%
set _time=!_time:%__DotToEnd%=!
set _time=%_time:.=%
EndLocal && set _time=%_time%
Убедитесь, что в вашем времени есть только одна точка, когда она используется.
Попытка объяснить сейчас. Конечно, вы можете просто использовать его и избавить себя от головной боли, пытаясь понять.
- SetLocal определяет локальную область видимости. Все, что изменилось между этим моментом и EndLocal, не будет длиться после EndLocal. Вы не можете иметь SetLocal внутри SetLocal.
- EnableDelayedExpansion позволяет использовать!с, между прочим. Это позволяет мне использовать переменную внутри переменной.
- Я добавляю _EndOfStringMarker, так что если значение ms (в вашем примере
07
) встречается где-либо еще, например, значение секунд, которое не будет заменено.
- Я обрезаю перед точкой, включая точку, оставляя меня со всем после точки. Командная строка не позволяет мне сделать это наоборот.
- Я заменяю все после точки в исходной строке ничем, оставляя меня со временем, заканчивающимся точкой.
- Я заменяю точку ничем.
- Я заканчиваю местность, чтобы привести в порядок вещи. Чтобы сохранить новое значение времени вне этой локальной области, я должен установить его себе на той же строке. Это еще одна причуда командной строки.
Источник для хитрой обрезки до конца: http://ss64.com/nt/syntax-replace.html