ScumPuppy
asked on
make a batch file report the time it took to run into a text file
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
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
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
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.
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.
ASKER
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
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
Amazingtech's script should show you the seconds and hundreths of a second...
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.
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.
ASKER
excellent suggestion! many thanks :) works a treat!!
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.
I will post a code shortly.
OK. Give this a try.
I also added if exist then call the batch file otherwise run the command.
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