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

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

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

Новый участник


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

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


Добрый день.
Искал на интернете как узнать как долго работает та или иная программа в Windows 7. Нашел этот скрипт, но он к сожалению у любой программы пишит только 0.00:00:00. Может ктонибудь помочь с созданием ВАТ скрипта?

Отправлено: 14:03, 24-02-2017

 

Новый участник


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

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


Iska, а что это, можно пример?

Отправлено: 11:29, 25-02-2017 | #11



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

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


Ветеран


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

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


Пример на PowerShell'е привёл выше коллега alpap. WSH — Windows Script Host, предшественник PowerShell'а, имеет по умолчанию в комплекте два языка: VBScript и JScript. Например (WSH, VBScript):
Код: Выделить весь код
Option Explicit

Dim objSWbemObjectEx


With WScript.CreateObject("WbemScripting.SWbemDateTime")
	For Each objSWbemObjectEx In WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'notepad.exe'")
		.Value = objSWbemObjectEx.CreationDate
		WScript.Echo "Notepad worked at " & DateDiff("n",  .GetVarDate, Now()) & " minutes"
	Next
End With

WScript.Quit 0
Цитата kerk:
куда писать название конкретной программы в ваш код? »
Вместо слова «AkelPad». В мою — вместо «notepad.exe».

Отправлено: 11:50, 25-02-2017 | #12


Новый участник


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

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


Iska, вставил в код название программы vlc.exe
Код: Выделить весь код
powershell /nologo /noprofile "[int]((get-date) - ((get-process 'vlc.exe').starttime)).totalminutes"
powershell пишит ошибку
Код: Выделить весь код
Get-Process : Cannot find a process with the name "vlc.exe". Verify the process name and call the cmdlet again.
At line:1 char:33
+ [int]((get-date) - ((get-process <<<<  'vlc.exe').starttime)).totalminutes
    + CategoryInfo          : ObjectNotFound: (vlc.exe:String) [Get-Process], ProcessCommandException
    + FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand

Cannot find an overload for "op_Subtraction" and the argument count: "2".
At line:1 char:19
+ [int]((get-date) - <<<<  ((get-process 'vlc.exe').starttime)).totalminutes
    + CategoryInfo          : NotSpecified: (:) [], MethodException
    + FullyQualifiedErrorId : MethodCountCouldNotFindBest
VBS код конечно интересный, но хотелось бы на дни:часы:минуты и в BAT/CMD. Это вообще возможно?

Отправлено: 12:44, 25-02-2017 | #13


Ветеран


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

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


Цитата kerk:
Iska, вставил в код название программы vlc.exe »
А надо было вставлять не «vlc.exe», а «vlc». С «.exe» — это для Wbem.

Цитата kerk:
VBS код конечно интересный, но хотелось бы на дни:часы:минуты »
В предыдущем коде заменить вывод на:
Код: Выделить весь код
WScript.Echo "Notepad worked at " & TimeSerial(0, 0, DateDiff("s",  .GetVarDate, Now()))
Цитата kerk:
и в BAT/CMD. Это вообще возможно? »
Возможно. Но уже без меня, ибо вычисления разницы даты/времени на пакетных файлах меня не прельщают. Я для подобных вещей превосходно обхожусь WSH и не вижу никакой нужды в пакетных файлах.

Отправлено: 13:19, 25-02-2017 | #14


Забанен


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

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


Цитата Iska:
Возможно. Но уже без меня, ибо вычисления разницы даты/времени на пакетных файлах меня не прельщают. Я для подобных вещей превосходно обхожусь WSH и не вижу никакой нужды в пакетных файлах.
А что сложного то в том? Элементарная математика, не более.
Цитата kerk:
VBS код конечно интересный, но хотелось бы на дни:часы:минуты и в BAT/CMD. Это вообще возможно?
Более чем.
Код: Выделить весь код
@echo off
  setlocal enabledelayedexpansion
  chcp 1251>nul
    set "i=0"
    for %%i in (%*) do set /a "i+=1"
    if %i% neq 1 echo:=^>err : index is out of range&goto:eof
    for /f delims^=^"^ tokens^=3 %%i in (
      'typeperf "\Процесс(%~1)\Прошло времени (сек)" -sc 1^
      ^| findstr /irc:":"'
    ) do 2>nul set /a "s=%%i" % rem : всего секунд
    if !s! equ -1 echo:=^>err : process has not been found&goto:eof
    set /a "ss=s%%60", "s/=60", "mm=s%%60", "s/=60", "hh=s%%24", "dd=s/24"
    for %%i in (%hh% %mm% %ss%) do (
      if %%i lss 10 (set "t=!t!0%%i:") else (set "t=!t!%%i:")
    )
    echo:%dd%.%t:~,-1%
  endlocal&chcp 866>nul
exit /b
Пример использования:
Код: Выделить весь код
C:\> ttime.cmd powershell
13.05:47:23

C:\> ttime.cmd vim
7.11:23:00
О минусах данного подхода: локалезависимость, которую, впрочем, можно обойти; если запущено более одной копии указанного процесса, значение возвращается для более старшего (увы, порочность счетчиков производительности); сам командный сценарий нужно сохранять в win-1251.

Отправлено: 13:36, 25-02-2017 | #15


Ветеран


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

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


Цитата greg zakharov:
А что сложного то в том? Элементарная математика, не более. »
Запутанно и нудно.

Отправлено: 13:54, 25-02-2017 | #16


Новый участник


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

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


greg zakharov, этот код я уже пробовал. Создал фаил test.cmd, потом запуститил командную строку с правами админа и написал C:\> test.cmd vlc.exe (пробовал так-же просто vlc). Наверно чтото делаю не так, так-как выкидывает это
Код: Выделить весь код
C:\test>test.cmd vlc
0.00:00:00

C:\test>
Хотя VLC работает где-то 22 часа.

Отправлено: 21:19, 25-02-2017 | #17


Забанен


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

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


Цитата kerk:
этот код я уже пробовал... Наверно чтото делаю не так...
Не наверное, а точно.

Как вариант могу предложить локаленезависимый способ.
Код: Выделить весь код
@echo off
  setlocal enabledelayedexpansion
    for %%i in (lodctr.exe) do (
      if not exist "%%~$PATH:i" (
        call:err "could not retrieve required data"
        goto:eof
      )
    )
    set "i=0"
    for %%i in (%*) do set /a "i+=1"
    if !i! neq 1 call:err "argument is out of range"&goto:eof
    set "pc=%tmp%\perf.tmp"
    lodctr /s:"%pc%"
    call:findlocalestr 230 object
    call:findlocalestr 684 counter
    del /f /q "%pc%"
    for /f delims^=^"^ tokens^=3 %%i in (
      'typeperf "%object%(%~1)%counter%" -sc 1 ^| findstr /rc:":"'
    ) do 2>nul set /a "s=%%i"
    if !s! equ -1 call:err "process has not been found"&goto:eof
    set /a "ss=s%%60", "s/=60", "mm=s%%60", "s/=60", "hh=s%%24", "dd=s/24"
    for %%i in (%hh% %mm% %ss%) do (
      if %%i lss 10 (set "t=!t!0%%i:") else (set "t=!t!%%i:")
    )
    echo:%dd%.%t:~,-1%
  endlocal
exit /b

:err
  echo:=^>err : %~1
exit /b 1

:findlocalestr
  for /f "tokens=2 delims==" %%i in (
    'find "%~1=" "%pc%" ^| findstr /brc:"%~1="'
  ) do set "%2=\%%i"
exit /b

Отправлено: 10:36, 26-02-2017 | #18


Новый участник


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

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


greg zakharov, попробовал, запустил последний скрипт ''локаленезависимый способ''. Опять что-то делаю не так?

Может у вас дополнительные программы установлены для таких операций, что-то типа PsTools и поэтому результат другой?

Программа VLC.exe работает уже 30-40 минут.


Отправлено: 12:07, 26-02-2017 | #19


Забанен


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

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


kerk, уважаемый, поясните для каких целей нужно в приведенном примере такое барахло, как pstools, когда используются штатные средства?! И да, что это у Вас за чудная версия 6.6.1.7601? Что-то не припомню таковой.

Отправлено: 12:30, 26-02-2017 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как узнать время работы программы AstalaWinda Скриптовые языки администрирования Windows 9 21-10-2017 13:41
Службы - Как узнать какие назначенные задания Windows были сделаны в последнее время? sputnikk Microsoft Windows 7 0 02-10-2016 13:27
CMD/BAT - [решено] Пауза в bat на время работы программы Uragan66 Скриптовые языки администрирования Windows 1 02-01-2016 21:32
Любой язык - Как узнать время, прошедшее после пуска Windows? Masutin Скриптовые языки администрирования Windows 12 03-12-2015 10:48
[решено] Время ожидания окончания работы программы SanyaJoker AutoIt 10 04-03-2009 14:33




 
Переход