Measure execution time of command in windows command line

@echo off
set start=%time%
:: run your command here...

set end=%time%
set options="tokens=1-4 delims=:."
for /f %options% %%a in ("%start%") do set start_h=%%a&set /a start_m=100%%b %% 100&set /a start_s=100%%c %% 100&set /a start_ms=100%%d %% 100
for /f %options% %%a in ("%end%") do set end_h=%%a&set /a end_m=100%%b %% 100&set /a end_s=100%%c %% 100&set /a end_ms=100%%d %% 100

set /a hours=%end_h%-%start_h%
set /a mins=%end_m%-%start_m%
set /a secs=%end_s%-%start_s%
set /a ms=%end_ms%-%start_ms%
if %hours% lss 0 set /a hours = 24%hours%
if %mins% lss 0 set /a hours = %hours% - 1 & set /a mins = 60%mins%
if %secs% lss 0 set /a mins = %mins% - 1 & set /a secs = 60%secs%
if %ms% lss 0 set /a secs = %secs% - 1 & set /a ms = 100%ms%
if 1%ms% lss 100 set ms=0%ms%

:: mission accomplished
echo Command took %hours%:%mins%:%secs%.%ms%

2 comments:

  1. Hi,

    if you enhance the code in line 3 by


    cmd /C %1 %2 %3 %4 %5 %6 %7 %8 %9

    you can use it as a standard command-line program and furthermore also measure some windows code which runs in background and finishes after (!!) the batch file (like rapidminer for instance).

    ReplyDelete
  2. Thanks a lot for this script. It helped a lot.

    ReplyDelete

Mayur Raiyani