Solved

make a batch file report the time it took to run into a text file

Posted on 2009-07-08
9
287 Views
Last Modified: 2012-05-07
Hi guys

Can anyone help with my creation of a batch file to report into a text file?

This is what I want to achieve, I would like to run a simple batch file and at the end of it have the batch file report the amount of seconds it took to run into a text file.

Is this possible? and if so has anyone any ideas of the code required to have it time itself and then to report into a text file?

Im happy for it to report a unique time at the start of it running and also at the end which in essence is a good way of seeing how long it took to run.

Can anyone help? :)

thanks
0
Comment
Question by:ScumPuppy
  • 3
  • 2
  • 2
  • +1
9 Comments
 
LVL 19

Expert Comment

by:deroode
Comment Utility
that would be something like:

echo --start-- > test.txt

time /t >> test.txt
 

rem the rest of your batch commands

echo --end-- >> test.txt

time /t >> test.txt

Open in new window

0
 
LVL 21

Accepted Solution

by:
AmazingTech earned 250 total points
Comment Utility
I will assume your task(s) will not take more than 24 hours to run.

Replace your tasks inbetween Set StartTime and Set EndTime. Or have this batch file time another running batch file.

Save the code something like timer.cmd:

Then pass the batch filename you want to time into timer.cmd. Eg. test.cmd on your desktop.

timer.cmd "%UserProfile%\Desktop\test.cmd"
@ECHO Off

@ECHO Doing stuff please wait...

Set StartTime=%Time%
 

Call %1
 

Set EndTime=%Time%
 

Set STHour=1%StartTime:~0,2%

Set STHour=%STHour: =0%

Set STMinute=1%StartTime:~3,2%

Set STSecond=1%StartTime:~6,2%

Set STHundredth=1%StartTime:~9,2%
 

Set EndHour=1%EndTime:~0,2%

Set EndHour=%EndHour: =0%

Set EndMinute=1%EndTime:~3,2%

Set EndSecond=1%EndTime:~6,2%

Set EndHundredth=1%EndTime:~9,2%
 

If %EndHundredth% LSS %STHundredth% (

    Set /a EndHundredth+=100

    Set /a EndSecond-=1

)
 
 

If %EndSecond% LSS %STSecond% (

    Set /a EndSecond+=60

    Set /a EndMinute-=1

)
 

If %EndMinute% LSS %STMinute% (

    Set /a EndMinute+=60

    Set /a EndHour-=1

)
 

If %EndHour% LSS %STHour% Set /a EndHour+=24
 

Set /a TimeDiffHour=1%EndHour%-%STHour%

Set /a TimeDiffMinute=1%EndMinute%-%STMinute%

Set /a TimeDiffSecond=1%EndSecond%-%STSecond%

Set /a TimeDiffHundredth=1%EndHundredth%-%STHundredth%
 

Set TimeDiff=%TimeDiffHour:~-2%:%TimeDiffMinute:~-2%:%TimeDiffSecond:~-2%.%TimeDiffHundredth:~-2%
 

Echo Start time: %StartTime%

Echo End time: %EndTime%

Echo Elapsed time: %TimeDiff%

Open in new window

0
 
LVL 16

Expert Comment

by:t0t0
Comment Utility
AmazingTech

It's nice to see a programatic approach. It looks good.

ScumPuppy

I'm not looking for points here - both AmazingTech and deroode desreve them for their efforts.

The last three lines of AmazingTech's code will display the times on the screen. To have these sent to a file instead, swap the last three lines with the follows modified lines:

   Echo Start time: %StartTime% >textfile.txt
   Echo End time: %EndTime% >>textfile.txt
   Echo Elapsed time: %TimeDiff% >>textfile.txt

This will output the times to a file named TEXTFILE.TXT.

ON A SIDE-NOTE:

1) It's conventional to name the output file with a .LOG extension name as in: TEXTFILE.LOG.

2) Furthermore, it's conventional to name the .LOG file the same name as the batch file itself.

The following modified lines (instead of the one's above) will achieve this:

   Echo Start time: %StartTime% >%~n0.log
   Echo End time: %EndTime% >>%~n0.log
   Echo Elapsed time: %TimeDiff% >>%~n0.log

So, if you name AmazingTech's batch file TIMERUN.BAT then the times will be output to a file (automatically created and) named TIMERUN.LOG.



0
 
LVL 1

Author Comment

by:ScumPuppy
Comment Utility
Guys, all of these are fantastic responses!!! thank you..

Is there a way it will detail the time it took to run in seconds as well as hours and minutes?

It would be extra special if the time I get back from this showed it to the second as well :)

I dont know if thats possible though
0
Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

 
LVL 19

Expert Comment

by:deroode
Comment Utility
Amazingtech's script should show you the seconds and hundreths of a second...
0
 
LVL 16

Expert Comment

by:t0t0
Comment Utility
AmazingTech's code gives you the start time, end time AND time difference ALL to an accuracy of 1/100th of a second.

Your question could be considered rude as it suggests you have not taken the time to either examine the replies already given nor tried any of the code because if you had, you would already know the answer to your last question.
0
 
LVL 1

Author Closing Comment

by:ScumPuppy
Comment Utility
excellent suggestion! many thanks :) works a treat!!
0
 
LVL 21

Expert Comment

by:AmazingTech
Comment Utility
No problem. I think ScumPuppy meant was to display 1 minute 5 seconds 76 one hundredth of a second as 65.76 seconds. That's a bit more tricky since I was using a 1 at the beginning to get around adding 08 and 09 in DOS which thinks it's an invalid octal number.

I will post a code shortly.
0
 
LVL 21

Expert Comment

by:AmazingTech
Comment Utility
OK. Give this a try.

I also added if exist then call the batch file otherwise run the command.
@ECHO On

@ECHO Doing stuff please wait...

Set StartTime=%Time%

Set StartTime= 9:36:47.31

if exist %1 (

    Call %*

) else (

    %*

)

 

Set EndTime=%Time%

 

Set STHour=1%StartTime:~0,2%

Set STHour=%STHour: =0%

Set STMinute=1%StartTime:~3,2%

Set STSecond=1%StartTime:~6,2%

Set STHundredth=1%StartTime:~9,2%

 

Set EndHour=1%EndTime:~0,2%

Set EndHour=%EndHour: =0%

Set EndMinute=1%EndTime:~3,2%

Set EndSecond=1%EndTime:~6,2%

Set EndHundredth=1%EndTime:~9,2%

 

If %EndHundredth% LSS %STHundredth% (

    Set /a EndHundredth+=100

    Set /a EndSecond-=1

)

 

 

If %EndSecond% LSS %STSecond% (

    Set /a EndSecond+=60

    Set /a EndMinute-=1

)

 

If %EndMinute% LSS %STMinute% (

    Set /a EndMinute+=60

    Set /a EndHour-=1

)

 

If %EndHour% LSS %STHour% Set /a EndHour+=24

 

Set /a TimeDiffHour=1%EndHour%-%STHour%

Set /a TimeDiffMinute=1%EndMinute%-%STMinute%

Set /a TimeDiffSecond=1%EndSecond%-%STSecond%

Set /a TimeDiffHundredth=1%EndHundredth%-%STHundredth%

 

Set TimeDiff=%TimeDiffHour:~-2%:%TimeDiffMinute:~-2%:%TimeDiffSecond:~-2%.%TimeDiffHundredth:~-2%

Set /a TimeDiffSeconds=((1%TimeDiffHour:~-2% - 100) * 3600) + ((1%TimeDiffMinute:~-2% - 100) * 60) + (1%TimeDiffSecond:~-2% - 100)

Set TimeDiffSeconds=%TimeDiffSeconds%.%TimeDiffHundredth:~-2%

 

Echo Start time: %StartTime%

Echo End time: %EndTime%

Echo Elapsed time: %TimeDiff%

Echo Elapsed time (seconds): %TimeDiffSeconds%

Open in new window

0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

You may have already been in the need to update a whole folder stucture using a script. Robocopy does it well and even provides a list of non-updated files in a log (if asked to). Generally those files that were locked by a user or a process by the …
How to remove superseded packages in windows w60 or w61 installation media (.wim) or online system to prevent unnecessary space. w60 means Windows Vista or Windows Server 2008. w61 means Windows 7 or Windows Server 2008 R2. There are various …
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

728 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now