Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Foreigner, чего-то Вы мудрите:
Код: Выделить весь код
((date)-(ps процесс).StartTime).ToString()
Или:
Код: Выделить весь код
((date)-(ps процесс).StartTime).ToString().Split('.')[0]
Хотя можно и в методе ToString указать как должно форматировать время.
PowerShell это, конечно, хорошо, но и на командном языке получить время работы процесса более, чем возможно (причем без WMI):
Код: Выделить весь код
@echo off
  setlocal
    set "i=0"
    for %%i in (%*) do set /a "i+=1"
    if "%i%" gtr "1" echo:Index is out of range.&goto:eof
    
    chcp 1251>nul
    for /f "tokens=3 delims=.," %%i in (
      'typeperf "\Процесс(%1)\Прошло времени (сек)" -sc 1^
      ^| findstr /rc:"\:"'
    ) do set "s=%%~i"
    chcp 866>nul
    
    set /a "ss=s%%60", "s/=60", "mm=s%%60", "s/=60", "hh=s%%24", "dd=s/24"
    if %hh% lss 10 set "hh=0%hh%"
    if %mm% lss 10 set "mm=0%mm%"
    if %ss% lss 10 set "ss=0%ss%"
    echo:%dd%.%hh%:%mm%:%ss%
  endlocal
exit /b
Пример работы:
Код: Выделить весь код
E:\sandbox> pstime.cmd процесс
0.12:38:54

E:\sandbox>
Правда если в системе запущено более одной копии процесса, typeperf вернет значение для процесса, запущенного ранее остальных копий.
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:29, 03-11-2015 | #7