@echo off
set starttime=%TIME%
set startcsec=%STARTTIME:~9,2%
set startsecs=%STARTTIME:~6,2%
set startmins=%STARTTIME:~3,2%
set starthour=%STARTTIME:~0,2%
set /a starttime=(%starthour%*60*60* 100)+(%startmins%*60*100)+(% startsecs%*100)+(%startcsec%)
:TimeThis
ping localhost
set endtime=%time%
set endcsec=%endTIME:~9,2%
set endsecs=%endTIME:~6,2%
set endmins=%endTIME:~3,2%
set endhour=%endTIME:~0,2%
if %endhour% LSS %starthour% set /a endhour+=24
set /a endtime=(%endhour%*60*60*100)+ (%endmins%*60*100)+(%endsecs%* 100)+(%endcsec%)
set /a timetaken= ( %endtime% - %starttime% )
set /a timetakens= %timetaken% / 100
set timetaken=%timetakens%.% timetaken:~-2%
echo.
echo Took: %timetaken% sec.
Measure execution time of command in windows command line
Labels:
bat,
Batch,
batch file,
Windows
Subscribe to:
Post Comments (Atom)
Hi,
ReplyDeleteThanks for your code. It is helpful for me.
There is one problem in it. I've met with this error "Invalid number. Numeric constants are either decimal". It is becaues set /a treats all numbers started with 0 as a octal values. When eg. endsec is equal to 09 there is unproper behaviour.
You need to convert these numbers to looks like a decimal.