Como posso obter o tempo de execução de um processo em termos reais?
Suposição:
- Por "termos do mundo real" você realmente quer dizer Tempo decorrido
Existem duas possibilidades:
-
pslist
(de Windows SysInternals ) - PowerShell
pslist
solution
Use pslist de Windows SysInternals .
Exemplo de saída para o notepad ++:
F:\test>"c:\apps\WSCC\Sysinternals Suite"\pslist notepad++
pslist v1.3 - Sysinternals PsList
Copyright (C) 2000-2012 Mark Russinovich
Sysinternals - www.sysinternals.com
Process information for HAL:
Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time
notepad++ 8064 8 9 508 46828 0:02:05.003 148:52:29.866
Use o seguinte arquivo em lote (example.cmd) para limpar a saída:
@echo off
setlocal enabledelayedexpansion
for /f "usebackq skip=3 tokens=8" %%i in ('pslist notepad++ 2^> nul') do (
echo elapsed time: %%i
)
endlocal
Saída:
F:\test>example.cmd
elapsed time: 148:54:15.628
F:\test>
Solução do PowerShell
Use o seguinte script powershell (GetProcessElapsedTime.ps1):
$ts=((get-date) - (get-process notepad++).StartTime)
$hours = ($ts.Days * 24 + $ts.Hours).ToString("00")
$minutes = $ts.Minutes.ToString("\:00")
$seconds = $ts.Seconds.ToString("\:00")
$milliseconds = $ts.Milliseconds.ToString("\.000")
Write-Output ($hours + $minutes + $seconds + $milliseconds)
Exemplo de saída para o notepad ++:
PS F:\test> .\GetProcessElapsedTime
148:54:46.667
PS F:\test>
Aviso de isenção
Eu não sou afiliado com pslist de qualquer forma, eu sou apenas um usuário final de o software.