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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вычисление времени работы скрипта

Ответить
Настройки темы
CMD/BAT - [решено] Вычисление времени работы скрипта

Аватара для V!RTuE

Пользователь


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

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


нашел такой вот код:
Код: Выделить весь код
@echo off
set timeS=%time%
pause&:: сюда вставить код
set timeE=%time%
set /a timeMS=100+1%time:~-2%-1%timeS:~-2%
set /a timeSS=60+1%time:~6,2%-1%timeS:~6,2%
set /a timeMM=60+1%time:~3,2%-1%timeS:~3,2%
set /a timeHH=24+1%time:~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
Но он работает не совсем верно. Если скрипт запущен в период с 10:00 до 23:59, то время показывает верно, а если с 00:00 до 09:59, то ровно на 1 час больше. Ну а если вообще запущен до 10 утра, а закончил работу после 10, то аж на 6 часов больше показывает. Как исправить? или есть более точные способы вычисления времени работы?
Надо именно показывать в формате чч:мм:сс

Отправлено: 12:01, 17-02-2016

 

Аватара для Elven

Ветеран


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

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


наверное проблема в том, что с точки зрения cmd, например, 5 и 05 это разные числа (точнее в разных системах счисления). Соответственно для чисел от 0 до 8 нужно дописывать спереди 0.

Отправлено: 12:12, 17-02-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для V!RTuE

Пользователь


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

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


Цитата Elven:
наверное проблема в том, что с точки зрения cmd, например, 5 и 05 это разные числа (точнее в разных системах счисления). Соответственно для чисел от 0 до 8 нужно дописывать спереди 0. »
а в данном коде тогда где это дописать нужно?

Отправлено: 12:21, 17-02-2016 | #3


Аватара для 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вычисление времени работы скрипта

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] Автоматический запуск скрипта PowerShell по времени. KAB Скриптовые языки администрирования Windows 7 06-03-2012 10:20
2007 - Excel | Вычисление времени в Excel Vowan Microsoft Office (Word, Excel, Outlook и т.д.) 1 01-02-2010 17:09
Автоматический запуск скрипта по времени Non-Stop Общий по Linux 20 02-12-2006 15:17
как произвесит расчет времени выполнения скрипта Vlad Drakula Вебмастеру 1 10-12-2003 00:05
подсчет времени выполнения скрипта на PHP Vlad Drakula Вебмастеру 2 13-10-2003 16:20




 
Переход