Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Мониторинг игрового процесса (http://forum.oszone.net/showthread.php?t=348978)

Андрейwik 10-06-2021 09:46 2959899

Мониторинг игрового процесса
 
Всем привет!
Помогите пожалуйста написать bat скрипт, который будет мониторить процесс игрушки Napoleon.exe, находиться он по пути D:\Napoleon Total War\
При этом, если процесс живой, то формировать текстовый файл с реальным временем, в котором будет например циферка 1, если процесса нет, то 0

Очень хочу понять, когда ребенок запускал игру :)))

Заранее благодарю за помощь)

greg zakharov 10-06-2021 11:21 2959908

Андрейwik, проще выставить журналирование для указанного экзешника: не придётся изобретать колесо сызнова. Также с помощью системных апплетов можно ограничить время на работу того или иного приложения.

Андрейwik 10-06-2021 11:25 2959909

greg zakharov, через систему конечно проще, но хотелось бы попробовать именно скрипт :) а то я профан в этом

greg zakharov 10-06-2021 11:32 2959911

Андрейwik, во-первых, сценарии (в частности бати) предназначены для других целей, как правило автоматизации, а системные оснастки - как раз для управления системой; во-вторых, извращаться с мониторингом процесса через батю всю равно не получится просто так, ибо придётся задействовать планировщик. Последний является частью "экосистемы" тех же оснасток винды. Так вот вопрос: для чего подпирать костылём здоровую ногу? Мало йода?

Андрейwik 10-06-2021 11:36 2959912

greg zakharov, так я и хочу этот скрипт поставить в планировщик. Мне вот даже самому интересно как это будет работать. По этому и прошу помощи )

greg zakharov 10-06-2021 11:40 2959915

Цитата:

Цитата Андрейwik
так я и хочу этот скрипт поставить в планировщик.

Что вы не читаете внимательно написанное, это понятно. Вы можете ответить для чего вам данный костыль? Глас разума взывает к использованию оснастки журналирования.

Андрейwik 10-06-2021 11:49 2959916

greg zakharov, это будет некой автоматизацией, чтоб уками ни куда не лазить. А так можно просто открыть папку с логами и посмотреть когда программа была запущена, а когда нет. Может быть это и костыль, но мне кажется этот скрипт будет крутой штукой конкретно для меня. Если вам не сложно, могли бы Вы мне его предоставить?

alpap 10-06-2021 11:50 2959917

Цитата:

Цитата Андрейwik
Очень хочу понять, когда ребенок запускал игру »

во-первых что-то темните
во-вторых проблема так не решается
вот, например код, мониторит каждые 5 сек на появление процесса "Calculator.exe" и в случае успеха запишет время в файл рядом с собой и закроется
Код:

@echo off
set "p=Calculator.exe"
cmd /c for /l %%i in () do @tasklist /fi "imagename eq %p%"^|findstr /v :^&^& (^>"file.txt" (echo %date%_%time%)^& exit /b)^&^>nul timeout /t 5 /nobreak

теперь уже тут
но:
во-первых этот код должен работать всегда и у него есть видимое окно и у вас вероятно пойдут новые вопросы, как сделать чтобы окна не было видно (а это достигается только с помощью других языков или утилит) как записывать в файл чтобы не увидеть это
во-вторых при запущенной игре (в большинстве своем) многие процессы отрубаются для разгрузки процессора и этот может оказаться в их числе или не успеет записать в течении 5 сек, можно поставить и одну, но это уже нагрузка на процессор принудительная и будете делать выбор что более жалко - ребенок в игру поиграет или процессор сгорит. И это еще не все проблемы, там может дело и антивирусника коснуться и автозагрузки и прав ...

Андрейwik 10-06-2021 12:10 2959919

Я нашел у вас на форуме скрипт запущенного процесса блокнота, но я не понимаю. Как его реализовать под мой запрос!? (проверка запущенной игры на диске D:\ и формирование файла- если работает то 1, если нет то 0)

@Echo Off
SetLocal EnableExtensions

Set ProcessName=notepad.exe
TaskList /FI "ImageName EQ %ProcessName%" | Find /I "%ProcessName%"
If %ErrorLevel% NEQ 0 Start %windir%\%ProcessName%
Present = False
For Each Process In Processes
Present = (UCase(Process.Name) = UCase(Exe))
' MsgBox Process.Name + vbCrLf + Exe
Next

Set WS = CreateObject("WScript.Shell")

If Not Present Then
WS.Exec PathExe + "\" + Exe
End If

End If

alpap 10-06-2021 12:18 2959920

Цитата:

Цитата greg zakharov
Что вы не читаете внимательно написанное, это понятно »

так и есть, вроде как разговор со стеной.

DJ Mogarych 10-06-2021 16:09 2959958

Андрейwik, если игра запущена, что у вас выводит команда
Код:

powershell -command "get-process |? path -Match 'Napoleon'"
?

Iska 10-06-2021 22:07 2959996

Сегодня прямо День мониторинга избранного процесса. «Это просто праздник какой-то!»™ :).

P.S. А что — может заведём по такому случаю :lol:?

DJ Mogarych 10-06-2021 22:20 2959998

Отличная мысль!


Время: 22:55.

Время: 22:55.
© OSzone.net 2001-