Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Вынужден признать, что мое предположение оказалось ошибочным.
Дело было не в неправильном понимании cmd/bat различных систем счисления (хотя на такое я тоже напарывался), а в лишнем пробеле образующемся при изъятии числа часов для однозначных чисел.
Вот эта строка
Код: Выделить весь код
set /a timeHH=24+1%timeE:~0,2%-1%timeS:~0,2%
при подстановке приобретает вид: (при двухзначном значении часа, например "13", и, редположим, что час смениться не успел)
Код: Выделить весь код
set /a timeHH=24+113-113
Так все считается нормально и красиво, но! если количество часов однозначное (например "5", и, опять же, предположим, что час смениться не успел) это выражение превращаеся в
Код: Выделить весь код
set /a timeHH=24+1 5-1 5
Такую абракадабру бедняга set посчитать уже не осилит.

В результате конечный код может выглядеть как-то так:
Код: Выделить весь код
@echo off
set timeS=%time%
pause&:: сюда вставить код
set timeE=%time%
set /a timeMS=100+1%timeE:~-2%-1%timeS:~-2%
set /a timeSS=60+1%timeE:~6,2%-1%timeS:~6,2%
set /a timeMM=60+1%timeE:~3,2%-1%timeS:~3,2%
if %timeE:~0,2% LSS 10 (
if %timeS:~0,2% LSS 10 (
set /a timeHH=24+10%timeE:~1,1%-10%timeS:~1,1%
) else (
set /a timeHH=24+10%timeE:~1,1%-1%timeS:~0,2%
)) else (
if %timeS:~0,2% LSS 10 (
set /a timeHH=24+1%timeE:~0,2%-10%timeS:~1,1%
) else (
set /a timeHH=24+1%timeE:~0,2%-1%timeS:~0,2%
))
if %timeMS% lss 100 (set /a timeSS-=1) else (set /a timeMS-=100)
if %timeSS% lss 60 (set /a timeMM-=1) else (set /a timeSS-=60)
if %timeMM% lss 60 (set /a timeHH-=1) else (set /a timeMM-=60)
if %timeHH% geq 24 (set /a timeHH-=24)
echo %timeS% 
echo %timeE%
echo.%timeHH%:%timeMM%:%timeSS%,%timeMS%
pause
На мой взгляд правильнее было бы обойтись двумя if и вводом двух переменных, но мне лень, простите уж...

Последний раз редактировалось Elven, 17-02-2016 в 13:40.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:31, 17-02-2016 | #4