Computing.Net > Forums > Programming > Batch Timer

Computer Problems? Computing.Net has over 1,000,000 posts about all things technology related! Over 90% answered within 24 hours! Click here to start participating now! Also, be sure to check out the New User Guide.

Batch Timer

Reply to Message Icon

Name: LEoH
Date: April 1, 2009 at 04:32:13 Pacific
OS: Microsoft Windows XP Professional
CPU/Ram: 2.31 GHz / 3582 MB
Product: Gigabyte / M52s-s3p
Subcategory: Batch
Comment:

Hey,
I am trying to write a script that calculates the
time that a batch file takes to run.
I have managed to make it print the start and
end lines but i want it to be able to calculate
the time difference between STT and ENT.

If someone could please give me an example of how to do this id me much appreciative.

here is what i have so far:

___________________________________

Start Of Batch
___________________________________
@ECHO OFF
COLOR F2

::Set Start Time
SET STT=%time%

::Place For Script.

::Set End Time
SET ENT=%time%

ECHO.%STT%
ECHO.%ENT%
___________________________________

End Of Batch
___________________________________

Its obviously a simple script but i am going to
add it to another script to log the time it takes
to complete.

Thanks.



Sponsored Link
Ads by Google

Response Number 1
Name: Mechanix2Go
Date: April 1, 2009 at 04:55:37 Pacific
Reply:

Holla already did the work.

====================
@echo off & setLocal EnableDelayedExpansion

If %1a==a goto Usage
set starttime=%time%
call :ExtractHMSHn %starttime% StartTimeInNum
call %*
set endtime=%time%
call :ExtractHMSHn %endtime% EndTimeInNum
:find the Difference in time
set /a diff = %EndTimeInNum% - %StartTimeInNum%
Set /a Elapsedhrs= %diff% / (60 * 60 * 100)
Set /a Elapsedmin= (%diff% - (%Elapsedhrs% * 60*60*100)) / 6000
set /a elapsedsectmp= %diff% - (%Elapsedhrs% * 60*60*100 ) %% 6000
set /a elapsedsec= %elapsedsectmp% / 100
set /a elapsedhun= %elapsedsectmp% %% 100
Echo Elapsed time: %Elapsedhrs%:%Elapsedmin%:%elapsedsec%.%elapsedhun%
goto :EOF
:Usage
Echo Usage: %0 YourCommand [Your command's parameters]
Echo Example: %0 ping -n 2 127.0.0.1
echo - will execute "ping -n 2 127.0.0.1" and tells how long it for execution.
goto :EOF

:ExtractHMSHn
set t1=%1
set hun=%t1:~9,2%
set sec=%t1:~6,2%
set min=%t1:~3,2%
set hr=%t1:~0,2%
:Remove zero from the begining so that it does not crib about invalid octal
if %hun:~0,1%==0 set hun=%hun:~1,1%
if %sec:~0,1%==0 set sec=%sec:~1,1%
if %min:~0,1%==0 set min=%min:~1,1%
if %hr:~0,1%==0 set hr=%hr:~1,1%
set /a %2 = %hun% %% 100 + %sec% * 100 + %min% * 60*100 + %hr% * 60*60*100
exit /b
endlocal


=====================================
If at first you don't succeed, you're about average.

M2


0

Response Number 2
Name: lee123abc
Date: April 1, 2009 at 05:08:46 Pacific
Reply:

::NOTE: The answer wont be 100% accurate, but it is reasonably correct.
:: The answer is in seconds. (so if your script takes minutes, divide by 60)
:: Enjoy

@echo off & cls & type nul>timelog.log
echo %time%>timelog.log
::XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
::--------YOUR SCRIPT BEGINS HERE--------
::The ping below is just for testing purposes... you must remove this when you put
:: your script here, as it will mess your time around..
ping -n 3 -w 1000 1.1.1.1 >nul


::--------YOUR SCRIPT ENDS HERE--------
::XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
echo %time%>>timelog.log
::-------TIME MATHS-------
:TIME_MATHS
::set information into variables
setlocal enabledelayedexpansion
for /f %%j in (timelog.log) do (
set /a number +=1
set reaction_time=%%j
set reaction!number!=!reaction_time!
)
::=========================================
::sort variables into specific variables
set hh1=%reaction1:~0,2%
set mm1=%reaction1:~3,2%
set ss1=%reaction1:~6,2%
set hh2=%reaction2:~0,2%
set mm2=%reaction2:~3,2%
set ss2=%reaction2:~6,2%
::=========================================
::this is an important step. the reason you add 2 is to get
::away from the 08 and 09 octal which will crash your file.
set /a hh1 +=2
set /a hh2 +=2
set /a mm1 +=2
set /a mm2 +=2
set /a ss1 +=2
set /a ss2 +=2
::=========================================
::a bit of maths to get varibales correct for time
::sort out seconds
:GET_SS
set /a answer_ss = %ss2%-%ss1%
if %answer_ss% == 0 goto :GET_MM
if %answer_ss% lss 0 (
goto :SS_NEGATIVE
) else (
goto :GET_MM
)
:SS_NEGATIVE
set answer_ss=
set /a ss2 +=60
set /a answer_ss = %ss2%-%ss1%
set /a mm2 -=1
::=========================================
::sort out minutes
:GET_MM
set /a answer_mm=%mm2%-%mm1%
if %answer_mm% == 0 goto :GET_HH
if %answer_mm% lss 0 (
goto :MM_NEGATIVE
) else (
set /a answer_mm = 60*%answer_mm%
goto :GET_HH
)
:MM_NEGATIVE
set answer_mm=
set /a mm2 +=60
set /a answer_mm = %mm2%-%mm1%
set /a hh2 -=1
::=========================================
::sort out hours
:GET_HH
set /a answer_hh = %hh2%-%hh1%
if %answer_hh% == 0 goto :FINAL_ANSWER
if %answer_hh% lss 0 (
goto :HH_NEGATIVE
) else (
set /a answer_hh = 60*60*%answer_hh%
goto :FINAL_ANSWER
)
:HH_NEGATIVE
set answer_hh=
set /a hh2 +=60
set /a answer_hh = %hh2%-%hh1%
::=========================================
::final answer should display in combined seconds
:FINAL_ANSWER
set /a final_time = %answer_hh%+%answer_mm%+%answer_ss%
echo Your time was: %final_time% (Seconds)
rem pause>nul
ping -n 2 -w 1000 1.1.1.1 >nul
goto :EOF


0

Response Number 3
Name: Judago
Date: April 1, 2009 at 19:37:07 Pacific
Reply:

Call me lazy but I just use ntimer.exe from one of the windows resource kits(2003 I think).


0

Response Number 4
Name: LEoH
Date: April 1, 2009 at 22:45:08 Pacific
Reply:

Thankyou All very much for your replies.
The first one wasn't exactly what i was after but it was what i was looking for for one
of my other programs.

The first one seems to be a replacement for ntimer.exe.

Thanks again,
LEoH

EDIT: In the second one the last little section has a pause. That is a great idea to show messages for a small amount of time. I never thought about doing that. Thanks for the idea.


0

Sponsored Link
Ads by Google
Reply to Message Icon

Related Posts

See More







Post Locked

This post is quite old and has been locked from receiving new replies. Please create a new posting instead.


Go to Programming Forum Home


Sponsored links

Ads by Google


Results for: Batch Timer

Batch file interval timer www.computing.net/answers/programming/batch-file-interval-timer/11860.html

help needed with timed batch file www.computing.net/answers/programming/help-needed-with-timed-batch-file/14725.html

Batch - Store a command 4 later use www.computing.net/answers/programming/batch-store-a-command-4-later-use/14633.html