CMD/BAT - [решено] Батник отслеживающий и убивающий процесс

Аватара пользователя
Gragl

Re: CMD/BAT - [решено] Батник отслеживающий и убивающий процесс

Сообщение Gragl »

Molchune, Ваш код работает!



alpap, Ваша идея прекрасна, но в код пытался внести свои значения но ничего не получилось. Код не отслеживает а убивает процесс только в тот момент когда я запускаю батник



@echo off

set "p=MatrixStartup.exe"

cmd /c for /l %%i in (1,1,10) do @tasklist /fi "MatrixStartup eq %p%"^|findstr /v :^&^& (taskkill /f /im "%p%"^& exit /b)^&^>nul timeout /t 1 /nobreak






Цитата Iska:



Значит, пора учиться.
CMD/BAT - [решено] Батник отслеживающий и убивающий процесс




А Вы научите ? Изображение

C подменой файла и переименованием получилось. Этому я очень удивился!

Заинтересовал код из Вашей ссылки, я заменил имя процесса на свое и тоже сработало Изображение

А можно ли сделать так чтоб код запускал мою программу, отслеживал процес и когда бы его нашел и прикончил закрыл бы свое окошко и не висел бы в процессах?
Аватара пользователя
Gragl

Re: CMD/BAT - [решено] Батник отслеживающий и убивающий процесс

Сообщение Gragl »

пытаюсь стартануть прогу, но в третей сторке пишет что не может найти указанный файл



set WSShell = createobject("Wscript.Shell")

WSShell.CurrentDirectory="C:\Program Files (x86)\Matrix90\"

WSShell.run "C:\Program Files (x86)\Matrix90\Matrix90.exe",0



такой код в отдельном файле запускает прогу, но если его вставить в файл из Вашей ссылки то ошибка (переменная не определена)



Option Explicit

Dim wsh

Set wsh = WScript.CreateObject("WScript.Shell")

wsh.Run("""C:\Program Files (x86)\Matrix90\Matrix90.exe")

Set wsh = Nothing
Аватара пользователя
alpap

Re: CMD/BAT - [решено] Батник отслеживающий и убивающий процесс

Сообщение alpap »

Получилось Изображение



set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run """C:\Program Files (x86)\Matrix90\Matrix90.exe""",1





strComputer = "."

Set objWMIService = GetObject("winmgmts:" _

& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")



Set colMonitoredProcesses = objWMIService. _

ExecNotificationQuery("select * from __instancecreationevent " _

& " within 1 where TargetInstance isa 'Win32_Process'")

i = 0



Do While i = 0

Set objLatestProcess = colMonitoredProcesses.NextEvent

If objLatestProcess.TargetInstance.Name = "MatrixStartup.exe" Then

objLatestProcess.TargetInstance.Terminate

End If

Loop



Теперь осталось научиться завершить процесс скрипта
Аватара пользователя
Gragl

Re: CMD/BAT - [решено] Батник отслеживающий и убивающий процесс

Сообщение Gragl »

Цитата Gragl:



в код пытался внести свои значения
CMD/BAT - [решено] Батник отслеживающий и убивающий процесс




не надо этого было делать, это бесконечный цикл



Код:

Код: Выделить всё

cmd /c for /l %%i in () do ... (и далее с проверкой раз в секунду) ... timeout /t 1 /nobreak


Цитата Gragl:



MatrixStartup eq ...
CMD/BAT - [решено] Батник отслеживающий и убивающий процесс




вместо: "imagename eq ..."

это что за ..., не знаете синтаксиса или справку смотрите или спрашивайте или не трогайте

код должен быть запущен заранее (естественно), до появления процесса и как процесс появится, он будет отключен и код прекратит работу.
Аватара пользователя
Gragl

Re: CMD/BAT - [решено] Батник отслеживающий и убивающий процесс

Сообщение Gragl »

Получилось Изображение



set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run """C:\Program Files (x86)\Matrix90\Matrix90.exe""",1





strComputer = "."

Set objWMIService = GetObject("winmgmts:" _

& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")



Set colMonitoredProcesses = objWMIService. _

ExecNotificationQuery("select * from __instancecreationevent " _

& " within 1 where TargetInstance isa 'Win32_Process'")

i = 0



Do While i = 0

Set objLatestProcess = colMonitoredProcesses.NextEvent

If objLatestProcess.TargetInstance.Name = "MatrixStartup.exe" Then

objLatestProcess.TargetInstance.Terminate

End If

Loop



Теперь осталось научиться завершить процесс скрипта
Аватара пользователя
alpap

Re: CMD/BAT - [решено] Батник отслеживающий и убивающий процесс

Сообщение alpap »

Цитата Gragl:



А можно ли сделать так чтоб код запускал мою программу, отслеживал процес и когда бы его нашел и прикончил закрыл бы свое окошко и не висел бы в процессах?
CMD/BAT - [решено] Батник отслеживающий и убивающий процесс




У него нет «окошка» (если только Вы не исполняете код под консольным cscript.exe). Можно:



Код:

Код: Выделить всё

Option Explicit
With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
	.Get("Win32_Process").Create "c:\Windows\System32\notepad.exe", "c:\Windows\System32", Nothing, Empty
	.ExecNotificationQuery( _
		"SELECT * FROM __InstanceCreationEvent " & _
		"WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' AND " & _
		"TargetInstance.Name = 'calc.exe'" _
	).NextEvent.TargetInstance.Terminate
End With
WScript.Quit 0

В роли процесса, который нужно запустить — Блокнот, в роли процесса, который следует следом «прихлопнуть» — Калькулятор. Замените имена и пути на свои. Будет работать, только если всё происходит именно так, как Вы описали.
Аватара пользователя
Gragl

Re: CMD/BAT - [решено] Батник отслеживающий и убивающий процесс

Сообщение Gragl »

Цитата Gragl:



на мгновение появляется и исчезает окошко консоли
CMD/BAT - [решено] Батник отслеживающий и убивающий процесс




а вот исчезать не должно, должно висеть пустое окно и ждать процесса, как появится процесс, пропадет и процесс и окно закроется

в вашем случае, вероятно, процесс "MatrixStartup.exe" все же уже запущен до запуска кода и он и код убивается, а следующий запущенный процесс "MatrixStartup.exe" уже некому убивать, процесс cmd уже отключился.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Батник отслеживающий и убивающий процесс

Сообщение Iska »

Iska,



Все сделал как Вы сказали Изображение

Просто супер!

Большое Вам спасибо!





alpap,

А Ваш код, к сожалению, не работает в режиме ожидания процесса.

Срабатывает только тогда, когда я его вызываю. Все также на мгновение появляется и исчезает окно, выполняя одну команду taskkill /f /im "%p%



Я попробовал протестировать его на примере калькулятора. Очень хотелось бы увидеть его в деле, но увы, результат тот же.



@echo off

set "p=calc.exe"

cmd /c for /l %%i in () do @tasklist /fi "imagename eq %p%"^|findstr /v :^&^& (taskkill /f /im "%p%"^& exit /b)^&^>nul timeout /t 1 /nobreak
Аватара пользователя
alpap

Re: CMD/BAT - [решено] Батник отслеживающий и убивающий процесс

Сообщение alpap »

Чтобы посмотреть что происходит в окне я добавил pause в файл с кодом расширения .bat

И увидел странный знак "■" в отчете



"■t" не является внутренней или внешней командой.

Откуда взялся этот знак не пойму.

Сохранял в кодировке ANSI и UTF-8



@echo off

set "p=calc.exe"

cmd /c for /l %%i in () do tasklist /fi "imagename eq %p%"^|findstr /v :^&^& (taskkill /f /im "%p%"^& exit /b)^&^>nul timeout /t 1 /nobreak

pause
Аватара пользователя
Gragl

Re: CMD/BAT - [решено] Батник отслеживающий и убивающий процесс

Сообщение Gragl »

Iska,



Все сделал как Вы сказали Изображение

Просто супер!

Большое Вам спасибо!





alpap,

А Ваш код, к сожалению, не работает в режиме ожидания процесса.

Срабатывает только тогда, когда я его вызываю. Все также на мгновение появляется и исчезает окно, выполняя одну команду taskkill /f /im "%p%



Я попробовал протестировать его на примере калькулятора. Очень хотелось бы увидеть его в деле, но увы, результат тот же.



@echo off

set "p=calc.exe"

cmd /c for /l %%i in () do @tasklist /fi "imagename eq %p%"^|findstr /v :^&^& (taskkill /f /im "%p%"^& exit /b)^&^>nul timeout /t 1 /nobreak
Ответить

Вернуться в «Скриптовые языки администрирования Windows»