Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Неправильно считает (http://forum.oszone.net/showthread.php?t=308241)

blacktor 21-11-2015 03:11 2577275

Неправильно считает
 
Куда-то выпилили авторизацию с вк, ну да ладно...
В общем у меня проблема со счетом времени.

Итак вот мой скрипт:

HTML код:

set fileSHARE=C:\111.txt
::путь к логу

::достаем дату изменения
::@echo off
for /f "usebackq delims=" %%I in ('"%fileSHARE%"') do set A=%%~tI

echo Last share in %a%
set mon=%a:~3,2%
::месяц
set D=%a:~0,2%
::день
set h=%a:~11,2%
::часы
set m=%a:~14,2%
::минуты

::переводим время изменения (часы минуты) в секунды
set /a Hs=H*3600
set /a Ms=M*60
::время изменения в секундах
set /a Ts=Hs+Ms

@echo off
echo ________________
echo hs %Hs%
echo ms %ms%
echo ts %ts%
echo ________________

Теперь я опишу суть ситуации, я перевожу время изменения файла в секунды и (математически) аналогично перевожу реальное время (я не стал расписывать, но работает так же), затем сравниваю эти величины. Так вот, все работает идеально за одним НО. Каждый час в 08 и 09 минут set /a Ms=M*60 равно нулю, КАК ТАК ТО???

Foreigner 21-11-2015 04:00 2577285

Цитата:

Цитата blacktor
Каждый час в 08 и 09 минут »

Потому, что числа, начинающиеся на 0 интерпретируются, как восьмеричные числа, а 8 и 9 не могут ими быть.

blacktor 21-11-2015 13:10 2577358

Как всегда меня выручили, спасибо. Я об этом не знал)

blacktor 26-11-2015 22:18 2579186

Georgio, это неверное решение. Если удалять 0, то допустим вместо 10:08, что равно 36480 секунд мы получим 1:8, что неверно сосчитается и получится 4080. Надо разделять часы, даты, месяцы еще больше, до 1 цифры, а потом пользоваться математикой и все перескладывать и переумножать))). Например так:

Цитата:

set now=%DATE: =0% %TIME: =0%
echo Real times is %now%
set mon1=%now:~3,2%
::месяц
set D1=%now:~0,2%
::день
set H11=%now:~11,1%
set H12=%now:~12,1%
::часы
set M11=%now:~14,1%
set M12=%now:~15,1%
::минуты

::переводим текущее время (часы минуты) в секунды
set /a h1=h11*600+h12*60
set /a Hs1=H1*60
set /a m1=m11*10+m12
set /a Ms1=M1*60

::текущее время в секундах
set /a Ts1=Hs1+Ms1


Время: 13:11.

Время: 13:11.
© OSzone.net 2001-