Насколько я знаю, в пакетных файлах нет явной команды «таймер», которую можно использовать, однако есть довольно простое решение. В верхней части вашего пакетного файла запишите текущее время (время начала), в конце пакетного файла запишите текущее время (время окончания), а затем сравните их. Что-то вроде этого должно сделать это (это кажется слишком сложным, но оно обрабатывает большинство причуд времени):
:: Store start time
set StartTIME=%TIME%
set H=%StartTIME:~0,2%
if "%H:~0,1%"==" " set H=%H:~1,1%
if "%H:~0,1%"=="0" set H=%H:~1,1%
set M=%StartTIME:~3,2%
if "%M:~0,1%"=="0" set M=%M:~1,1%
set S=%StartTIME:~6,2%
if "%S:~0,1%"=="0" set S=%S:~1,1%
set U=%StartTIME:~9,2%
if "%U:~0,1%"=="0" set U=%U:~1,1%
)
set /a Start100S=%H%*360000+%M%*6000+%S%*100+%U%
::
:: Add your script functionality here
::
:: Get the end time
set StopTIME=%TIME%
set H=%StopTIME:~0,2%
if "%H:~0,1%"==" " set H=%H:~1,1%
if "%H:~0,1%"=="0" set H=%H:~1,1%
set M=%StopTIME:~3,2%
if "%M:~0,1%"=="0" set M=%M:~1,1%
set S=%StopTIME:~6,2%
if "%S:~0,1%"=="0" set S=%S:~1,1%
set U=%StopTIME:~9,2%
if "%U:~0,1%"=="0" set U=%U:~1,1%
)
set /a Stop100S=%H%*360000+%M%*6000+%S%*100+%U%
:: Test midnight rollover. If so, add 1 day=8640000 1/100ths secs
if %Stop100S% LSS %Start100S% set /a Stop100S+=8640000
set /a TookTime=%Stop100S%-%Start100S%
echo Started: %StartTime%
echo Stopped: %StopTime%
echo Elapsed: %TookTime:~0,-2%.%TookTime:~-2% seconds
В качестве альтернативы # 1: в комплект ресурсов Windows Server 2k3 входит timeit.exe. Вы можете использовать это для отображения различной статистики производительности для вашего скрипта.
В качестве альтернативы # 2: Вы могли бы пойти намного проще, чем скрипт, размещенный выше, и сделать это:
echo %time%
::
:: Your script functionality
::
echo %time%
Однако это не даст вам времени выполнения в секундах.