Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как узнать время работы программы

Ответить
Настройки темы
CMD/BAT - [решено] Как узнать время работы программы

Пользователь


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

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


Здравствуйте. Нужно узнать, сколько времени работала определенная программа. Расширение exe. Я попробовал было tasklist /v, но там совсем не то время (cputime). Процесс эксплорер показывает время запуска, но во-первых, как его узнать из командной строки, во-вторых, как рассчитать из этого время работы программы.

Отправлено: 17:10, 02-11-2015

 


Administrator


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

Профиль | Сайт | Отправить PM | Цитировать


PowerShell:
Код: Выделить весь код
New-TimeSpan -Start (get-process имя_процесса).StartTime
От дней до миллисекунд.

-------
FAQ по Windows 10 .::. Настройка Центра обновления в Windows 10 .::. Чистая установка Windows 10 – пошаговая инструкция

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:18, 02-11-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


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

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


Не имел серьезных дел с повершеллом. Не подскажете, почему не работает это:
Код: Выделить весь код
New-TimeSpan -Start (get-process dwm).StartTime | find "TotalMinutes"
Пишет "FIND: Неправильный формат параметра".

Отправлено: 17:37, 02-11-2015 | #3


Ветеран


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

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


AstalaWinda, Потому, что надо смотреть с повышенными привилегиями, т.к. этот процесс запущен от другой уч. записи:
Код: Выделить весь код
 > (get-process dwm -includeusername).username
Window Manager\DWM-2

 > (get-process dwm).starttime

1 ноября 2015 г. 16:09:18

 > ((get-date) - ((get-process dwm).starttime)).totalminutes
1551,73859317167
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:06, 02-11-2015 | #4


Пользователь


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

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


Поэтому и не люблю объектные языки :\ Короче, я пришел к такому выводу:
Код: Выделить весь код
(New-TimeSpan -Start (get-process firefox).StartTime).totalminutes
Показывает время работы процесса в минутах, что мне и надо.

Отправлено: 18:28, 02-11-2015 | #5


Ветеран


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

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


Цитата AstalaWinda:
Поэтому и не люблю объектные языки »
Напрасно. Только представьте радость вычислений на пакетных файлах.

Отправлено: 19:14, 02-11-2015 | #6


Забанен


Сообщения: 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


Ветеран


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

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


greg zakharov, По условию нужны только минуты (totalminutes), можно сразу привести к натуральному числу, обозначить тип [int]:
Код: Выделить весь код
[int]((get-date) - ((get-process process).starttime)).totalminutes

Отправлено: 13:02, 03-11-2015 | #8


Забанен


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

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


Foreigner, изначально в условиях не было оговорено, что нужны именно минуты, это чуть позже автор темы, видимо, спохватился. Но сути это не умаляет - одно дело решить на CMD, что изначально и требовалось, другое - на PowerShell.

Отправлено: 13:25, 03-11-2015 | #9


Пользователь


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

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


Подскажите как получить список ВСЕХ процессов со "временем запуска", "Столько-то часов Столько то минут запущен"?
По возможности не на PowerShell.
Как вывести такой список отсортированным по времени запуска?

Отправлено: 13:41, 21-10-2017 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как узнать время работы программы

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - Как узнать время, прошедшее после пуска Windows? Masutin Скриптовые языки администрирования Windows 12 03-12-2015 10:48
HDD - Как узнать сколько часов работы провел винт Tima182 Накопители (SSD, HDD, USB Flash) 2 14-11-2011 23:14
Как узнать время создания раздела? Atle Хочу все знать 0 23-08-2011 00:31
HDD - выключился Пк во время работы программы Acronis DD 10 по изменению размера HDD руслан-р Накопители (SSD, HDD, USB Flash) 1 16-12-2009 02:03
[решено] Время ожидания окончания работы программы SanyaJoker AutoIt 10 04-03-2009 14:33




 
Переход