|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Остановка программы |
|
|
CMD/BAT - [решено] Остановка программы
|
Новый участник Сообщения: 11 |
Нужно что-бы при появлении определённого процесса программа останавливалась, а если процесс пропадёт-запускалась
|
|
Отправлено: 11:46, 02-08-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 12:09, 02-08-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 11
|
Профиль | Сайт | Отправить PM | Цитировать |
Отправлено: 13:48, 02-08-2017 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Процесс:
Цитата idenchik1488@vk:
|
|
Отправлено: 14:35, 02-08-2017 | #4 |
Новый участник Сообщения: 11
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Iska:
|
||
Отправлено: 14:49, 02-08-2017 | #5 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать вот отдельно
@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 :: Пропал процесс - выполнить команду и закрытся cmd/c for /l %%i in () do @tasklist /fi "imagename eq %p%"^|findstr/v :^|^| (echo Команда^& exit/b)^&^>nul ping -n 2 127.0.0.1 |
Отправлено: 11:01, 03-08-2017 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать idenchik1488@vk, с учётом изложенного Вами примерно так (WSH, VBScript):
Скрытый текст
Option Explicit Dim strProcess4Waiting Dim strProcess4Running Dim objSWbemServicesEx Dim objSWbemObjectEx Dim lngProcessID strProcess4Waiting = "calc.exe" strProcess4Running = "taskmgr.exe" Set objSWbemServicesEx = WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2") Do With objSWbemServicesEx.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.Name = '" & strProcess4Waiting & "'") With .NextEvent.TargetInstance WScript.Echo "Detect starting process [" & .Name & "], PID: [" & .ProcessID & "]." For Each objSWbemObjectEx In objSWbemServicesEx.ExecQuery("SELECT * FROM Win32_Process WHERE Name = '" & strProcess4Running & "'") If objSWbemObjectEx.Terminate() = 0 Then WScript.Echo "Process [" & objSWbemObjectEx.Name & "], PID: [" & objSWbemObjectEx.ProcessID & "] terminated successfully." Else WScript.Echo "Process [" & objSWbemObjectEx.Name & "], PID: [" & objSWbemObjectEx.ProcessID & "] terminate failure." End If Next With objSWbemServicesEx.ExecNotificationQuery("SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.Handle = '" & .ProcessID & "'") With .NextEvent.TargetInstance WScript.Echo "Detect finishing process [" & .Name & "], PID: [" & .ProcessID & "]." If objSWbemServicesEx.Get("Win32_Process").Create(strProcess4Running, Null, Null, lngProcessID) = 0 Then WScript.Echo "Process [" & strProcess4Running & "], PID: [" & lngProcessID & "] started successfully." Else WScript.Echo "Process [" & strProcess4Running & "] start failure." End If End With End With End With End With Loop Set objSWbemServicesEx = Nothing WScript.Quit 0 В роли «process.exe» в примере выступает Калькулятор. Запускать скрипт посредством cscript.exe. |
Отправлено: 12:58, 04-08-2017 | #7 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать мне этот скрипт очен понравился но можно ли поменять путь C:\Windows\System32\calc.exe на другое например C:\Windows\calc.exe и как это сделать ?
|
Отправлено: 19:07, 24-10-2017 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Raymans, где Вы собираетесь «поменять путь», если последний нигде в скрипте не используется?
|
Отправлено: 20:52, 24-10-2017 | #9 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать не совсем понял тоесть поменять путь не возможно что ли?
|
Отправлено: 10:01, 28-10-2017 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Принудительная остановка программы "Avast" и редактирования его ветвей реестра | turbolover | Скриптовые языки администрирования Windows | 4 | 22-07-2015 01:23 | |
Разное - Остановка счётчика триальной программы или восстановление её работы | beowulf0208 | Microsoft Windows 7 | 1 | 14-03-2011 12:41 | |
Остановка винчестера | Gover | Накопители (SSD, HDD, USB Flash) | 40 | 08-01-2011 01:10 | |
Службы - Остановка времени. | benwar | Microsoft Windows 7 | 5 | 30-09-2010 01:24 | |
Остановка винчестера | Zur0 | Железо в Linux | 6 | 18-12-2002 07:09 |
|