forked from codeproject/CodeProject.AI-Server
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathendtimer.bat
More file actions
44 lines (34 loc) · 1.74 KB
/
endtimer.bat
File metadata and controls
44 lines (34 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
@echo off
setlocal EnableDelayedExpansion
set projectName=%~1
set projectName=!projectName: =!
rem echo [Project Name: !projectName!]
rem This variable isn't available until the next terminal session
rem set starttime=!%projectName%_BuildStartTime!
rem Use a really, really big hammer
for /f "delims=" %%i in ('powershell -Command "& { [Environment]::GetEnvironmentVariable(\"%projectName%_BuildStartTime\", \"User\")}"') do set starttime=%%i
rem cleanup
powershell -Command "& {[Environment]::SetEnvironmentVariable(\"%projectName%_BuildStartTime\", $null, \"User\")"}
rem echo [Start time: !starttime!]
set "starttime=!starttime: =0!"
set "endTime=%time: =0%"
rem Convert times to integers for easier calculations
for /F "tokens=1-4 delims=:.," %%a in ("%STARTTIME%") do (
set /A "start=(((%%a*60)+1%%b %% 100)*60+1%%c %% 100)*100+1%%d %% 100"
)
for /F "tokens=1-4 delims=:.," %%a in ("%ENDTIME%") do (
IF %ENDTIME% GTR %STARTTIME% set /A "end=(((%%a*60)+1%%b %% 100)*60+1%%c %% 100)*100+1%%d %% 100"
IF %ENDTIME% LSS %STARTTIME% set /A "end=((((%%a+24)*60)+1%%b %% 100)*60+1%%c %% 100)*100+1%%d %% 100"
)
rem Calculate the elapsed time
set /A elapsed=end-start
rem Convert back to hr, min, sec
set /A hh=elapsed/(60*60*100), rest=elapsed%%(60*60*100), mm=rest/(60*100), rest%%=60*100, ss=rest/100, cc=rest%%100
if %hh% lss 10 set hh=0%hh%
if %mm% lss 10 set mm=0%mm%
if %ss% lss 10 set ss=0%ss%
if %cc% lss 10 set cc=0%cc%
set DURATION=%hh%:%mm%:%ss%.%cc%
rem echo ------ !projectName! build start at !starttime! -----
echo ------ !projectName! build complete at !endTime! -----
echo Build duration : %DURATION%