Показать полную графическую версию : [решено] подсчёт времени запущенного процесса redebook.exe
vlad_exe@vk
12-05-2012, 15:32
Мне необходим bat чтобы он вел подсчёт времени запущенного процесса redebook.exe ток чтобы не сильно грузило комп .
Возможно что то в этом роде
@Echo Off
Здесь начинается сохранения времени например сейчас 13:45:12
:test
Ping -n 4 127.0.0.1>nul
setlocal ENABLEDELAYEDEXPANSION
Set Process=redebook
tasklist | Find /i "%Process%.exe" || (goto Else)
:THEN
goto test
Goto end
:ELSE
Здесь когда процесс завершен идёт замер нового времени 15:51:16
Ну и потом 13:45:12 - 15:51:16 = 02:06:04
НУ и обработок остального
==================================
С:\WINDOWS\system32\cmd.exe
==================================
Start : 13:45:12
Сompleted : 15:51:16
Worked : 02:06:04
Last session : 01:02:01
Total: 0 days 20:11:12
Press any key to exit
==================================
Start : Время старта
Сompleted : Время закрытия
Worked : Время работы
Last session : Последние время работы
Total: 0 days Общие дни и время работы
Общие время и последние время работы должно сохранятся в config.cfg
Этот скрипт на подобии http://forum.oszone.net/thread-234460.html Вот этой темы .
Помогите плиз )))
vlad_exe@vk, объясните, зачем сие вообще нужно, и что нужно будет в конечном итоге.
vlad_exe@vk
13-05-2012, 00:56
Вообще то применений много , но хотя бы для игры , ведь так быстро летит время именно в играх , тут ты выходишь с игры и видишь сколько ты потратил жизни на эту бесполезную вещь )))
Пакетный файл — не лучший выбор для этого, хотя и возможный; примеры работы с разницей двух значений даты/времени на форуме есть, хотя бы в той же самой теме (http://forum.oszone.net/post-1914200.html#post1914200). В чём проблема-то?!
Лично у меня заниматься подобным желания нет, а вот Вы сами можете и попробовать.
vlad_exe@vk
13-05-2012, 02:46
Спасибо Кеп это моя тема .
Спасибо Кеп это моя тема . »
Я умею читать, и видел, что то — именно Ваша тема. Моя ссылка ведёт на конкретный пост в той теме.
Anonymоus
13-05-2012, 09:34
vlad_exe@vk, но зачем периодически делать проверку наличия процесса с определённым интервалом, это в корне неверный подход. Записать время старта, вызвать нужный процесс через Call, и когда он завершен - еще раз замерить время и высчитать разницу. Не трудно, правда? Тем более, примеры сравнения двух timestamp-ов у вас есть.
вызвать нужный процесс через Call »
«start /wait»?!
vlad_exe@vk
13-05-2012, 14:55
Anonymоus Не знаю , просто хочется чтобы всё было на автомате .
Я только начинающий скриптер для меня это сложновато .
Мне хотелось бы понять саму команд снятия показателей времени чтобы преобразовать его в %HH% %MM% %SS%
чтобы его можно было видать командой
echo. %HH%:%MM%:%SS%
Пожалуйста можете мне написать её отдельно внизу )
Anonymоus
13-05-2012, 18:22
vlad_exe@vk, то, что я предлагаю - и есть "на автомате". Только вместо кучи лишней работы вида tasklist | Find /i "%Process%.exe" || (goto Else) » я предлагаю вам:
1) замерить время
2) запустить программу, дождавшись ее закрытия
3) когда батник продолжит работу после закрытия программы, еще раз замерить время и высчитать разницу.
Время - %time%
Время БЕЗ милисекунд - %time:~-0,8%
Разбор времени в HH, MM и SS:
For /F "tokens=1,2,3 delims=:" %%A In ("%time:~-0,8%") Do (
Set HH=%%A
Set MM=%%B
Set SS=%%C
)
Вроде все достаточно просто. Если вы считаете те функции, которые я дал вам в предыдущей теме, сложными для использования или понимания - попробуйте сами реализовать подсчет времени.
vlad_exe@vk
14-05-2012, 12:18
Хмм наверное я тупой :cry: )))я никак не пойму но мне надо проделать вот такое
For /F "tokens=1,2,3 delims=:" %%A In ("%time:~-0,8%") Do (
Set HH=%%A
Set MM=%%B
Set SS=%%C
)
тут команда ( ждать завершения процесса пока не понял какая )
For /F "tokens=1,2,3 delims=:" %%A In ("%time:~-0,8%") Do (
Set HH2=%%A
Set MM2=%%B
Set SS2=%%C
)
потом команда
------------------------=
%HH%-%HH2%=H
%MM%-%MM2%=M
%SS%-%SS2%=S
------------------------=
вряд ли оно так )))
echo. %H%:%M%:%S%
pause
напилите пожалуйста пример такого скрипта может разберусь )) :cool:
Anonymоus А можно спросит , какое у вас образование ? вы программист ?
1) замерить время
2) запустить программу, дождавшись ее закрытия
3) когда батник продолжит работу после закрытия программы, еще раз замерить время и высчитать разницу. »
Все это хорошо, только у топикстартера не сказано, что запущенный процесс redebook.exe и запускаемая программа это одно и тоже.
Если запускаемая программа Game.exe запускает процесс redebook.exe и сама закрывается, то такой вариант не сработает. :(
2 vlad_exe@vk нужно точнее формулировать задачуприменений много , но хотя бы для игры »
Это не постановка задачи.
Здесь (http://forum.oszone.net/post-1010477.html#post1010477) есть совсем простенькое решение для варианта без дочерних процессов.
Anonymоus
15-05-2012, 16:21
%HH%-%HH2%=H
%MM%-%MM2%=M
%SS%-%SS2%=S
»
Ну, если бы всё так просто было. А вот допустим, у нас старт программы в 23:55:01, а завершение в 01:12:37. Что в этом случае ваш код насчитает, 22 часа 43 минуты и -36 секунд?
Не забывайте, что минуты и секунды - это шестидесятеричная система счисления, в которой Set /A работать увы, не умеет. А часы - принятое у нас деление на 24, хорошо, что не нужно реализовывать европейское 2х12, am и pm. Следовательно, если bat не умеет работать с такими системами счисления, что нужно сделать? Перевести в понятное командному интерпретатору windows счисление, десятичное к примеру. Для этого в том примере, что был дан вам в прошлой теме, я использую две функции - сериализацию (http://ru.wikipedia.org/wiki/Сериализация) времени, и соответственно, его десериализацию. Сначала переводим все данные в секунды, это десятичное число не превышает возможностей арифметики командного процессора, и с ним можно уже работать - вычитать, прибавлять и осуществлять более сложные операции. При этом не стоит забывать о переполнении раз в сутки, тот же пример со стартом в 23:55:01 и завершением в 01:12:37. И только после всех необходимых рассчетов с сериализованным временем его можно десериализовать и вывести понятный человеку результат. Вполне логично это будет организовать в виде функций с передаваемыми им аргументами.
какое у вас образование ? вы программист »
Нет. Немного балуюсь скриптовыми языками - перл, питон, но это именно что баловство. Если вы клоните к тому, что предлагаемые решения слишком сложны для гуманитария, то разочарую вас, это не так. Тут никакого матана не нужно, достаточно лишь логического мышления.
Если запускаемая программа Game.exe запускает процесс redebook.exe и сама закрывается, то такой вариант не сработает. »
Да, вы правы, я немного поспешил с выводами. Но как мне кажется, лучше всегда исходить из наиболее простого варианта, усложнить никогда не поздно, в том числе, и с отслеживанием по имени процесса\дочерним процессам.
2 vlad_exe@vk нужно точнее формулировать задачу »
Именно! Причём, чем конкретнее, тем лучше.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.