Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

Ответить
Настройки темы
CMD/BAT - Как закрыть процесс, при условии если открыт другой?

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


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


Конфигурация

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


Всем привет.
Подскажите как при помощи bat закрыть процесс, при условии если открыт другой?
Разжую вопрос.
Задача такая нужно что бы, если обнаружен процесс "notepad.exe", то завершить процесс "mspaint.exe",если нет такого процесса, то повторить данную команду -N количество раз.
Ну и если возможно, то по завершинии процесса "mspaint" закрыть батник.

P.S.
Извеняюсь если этот вопрос где то разбирался. поиск результатов не дал.
Зарание спасибо!

Отправлено: 02:10, 17-01-2013

 

Аватара для zion87

Старожил


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

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


Код: Выделить весь код
@echo off

set process1=notepad.exe
set process2=mspaint.exe

:st
tasklist /FI "ImageName EQ %process1%" | find /I "%process1%" 
If %errorlevel% NEQ 0 goto :st
taskkill /f /im %process2%
exit
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:24, 17-01-2013 | #2



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

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


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


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

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


Спасибо за поддержку. работает.
Еще вопроси как сделать так что бы запустилась сначала команда

@echo off

set process1=notepad.exe
set process2=mspaint.exe

:st
tasklist /FI "ImageName EQ %process1%" | find /I "%process1%"
If %errorlevel% NEQ 0 goto :st
taskkill /f /im %process2%

и что бы она висела в ожидании. ждала запуска "notepad" и при этом запустился к примеру "%programfiles%\winrar\winrar.exe"

Отправлено: 05:24, 18-01-2013 | #3


Аватара для zion87

Старожил


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

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


Код: Выделить весь код
@echo off

set process1=notepad.exe
set process2=mspaint.exe
set process3="%programfiles%\winrar\winrar.exe"

start "" %process3%

:st
tasklist /FI "ImageName EQ %process1%" | find /I "%process1%" 
If %errorlevel% NEQ 0 goto :st
taskkill /f /im %process2%
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:08, 18-01-2013 | #4


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


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

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


Спасибо. за ответы и за помощь.но возникла некая проблема. опишу суть правды что требуется.
команды работаю отлично, но проблемка вот в чем. нужно смотреть за процессом Firefox.exe, если он запущен то выключать другой процесс. к этому вопросов нет. Решено. но вот проблема в другом. Если переименовать файл в %programfile% скажем firefox.exe на firefox1.exe, то уже команда не работает, а пользователь может ее переименовать как хочет.Возможно ли как то сделать так что бы данная комадна закрывала второй процесс, не зависимо от названия этого Firefox-a ( при любом его названии?)

Отправлено: 19:02, 18-01-2013 | #5


Ветеран


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

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


KOS9I4OK, пожалуйста, ещё раз, с расстановкой и по-русски.

Отправлено: 03:57, 19-01-2013 | #6


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


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

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


Хорошо. Вот что у меня сделанно

@echo off
title star game
@echo created by KOS9I4OK
rem CenterSelf
set FGcol=1100
rem ChangeColor %FGcol% 0
rem PrintBoxAt 12 31 3 20 2
rem ChangeColor 0 %FGcol%
rem Wait 1500
rem ShadeBoxAt 13 32 1 2 2
rem Wait 1000
rem ShadeBoxAt 13 34 1 2 2
rem Wait 1000
rem ShadeBoxAt 13 36 1 2 2
rem Wait 1000
rem ShadeBoxAt 13 38 1 2 2
rem Wait 1000
rem ShadeBoxAt 13 40 1 2 2
rem Wait 1000
rem ShadeBoxAt 13 42 1 2 2
rem Wait 1000
rem ShadeBoxAt 13 44 1 2 2
rem Wait 1000
rem ShadeBoxAt 13 46 1 2 2
rem Wait 1000
rem ShadeBoxAt 13 48 1 2 2
rem ClearColor
rem Locate 25 1

set process1=firefox.exe
set process2=arma2OA.exe
set process3="Expansion\beta\arma2oa.exe" -beta=Expansion\beta;Expansion\beta\Expansion -nosplash -mod=@DayZ -connect=213.128.хх.хх -port=2302 -password=123456

start "" %process3%

:st
tasklist /FI "ImageName EQ %process1%" | find /I "%process1%"
If %errorlevel% NEQ 0 goto :st
taskkill /f /im %process2%
exit

Это все я запаковываю .exe файл и передаю игроку(клиенту).

Далее этот файл запускает игру. В игре как и в других есть возможность использовать читы.

Так вот чит включается по средством включенного браузера Firefox.exe. При данном коде работает все как надо. Если во время игры включили браузер, то закрылась игра.

Но если переименовать файл запуска браузера к примеру c firefox.exe в firefox123.exe, браузер запустится с именем процесса firefox123.exe и данный код не сработает.

Вот сам теперь вопрос. Возможно ли закрыть данный браузер (не зависимо от его названия) или вообще все браузеры на компьюторе?

Отправлено: 11:31, 19-01-2013 | #7


Старожил


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

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


KOS9I4OK, для оформления примеров кода используется bb-код code.
Насчёт закрытия окон браузера вне зависимости от имени процесса - можно использовать класс окна. Для этого нужна консольная версия утилиты NirCmd.
Код: Выделить весь код
@Echo Off
:: Убиваем ie
nircmdc win close class "IEFrame"
:: Убиваем оперу
nircmdc win close class "OperaWindowClass"
:: Убиваем хром
nircmdc win close class "Chrome_WidgetWin_0"
:: Убиваем огнелис
nircmdc win close class "MozillaWindowClass"
Имейте в виду, что у chrome и firefox при нескольких открытых вкладках окно не закроется автоматически, а попросит подтверждения на закрытие. Для обхода этого вы можете использовать эмуляцию нажатия клавиш, посланных в соответствующее окно с помощью всё того же nircmdc.exe (читайте справочный файл).

Замечу, что принудительно закрывать пользователю браузер - плохое решение. У него там может быть открыта нужная информация. Стоит хотя бы предупреждение перед закрытием выдавать. А от читеров батник не спасёт - ведь отредактировать его проще простого.

Последний раз редактировалось Anonymоus, 19-01-2013 в 17:20.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:09, 19-01-2013 | #8


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


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

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


Цитата Anonymоus:
для оформления примеров кода используется bb-код code. »
понял. Извеняюсь. Спасибо за ответ.

Отправлено: 17:38, 19-01-2013 | #9



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] Открыть привод, корректно убить процесс, закрыть привод и снова убить процесс - как? Nun-Nun Скриптовые языки администрирования Windows 8 31-10-2011 15:25
Теория - [решено] Определить открыт ли файл, и если да то каким процессом... RUVATA Программирование и базы данных 8 10-02-2011 05:35
.NET - Как определить что файл уже открыт, и если да, то кем? RUVATA Программирование и базы данных 0 14-01-2011 11:10
VBS/WSH/JS - Убить процесс, если окно активно rsod Скриптовые языки администрирования Windows 5 28-05-2010 15:59
Доступ - как мне для студента закрыть доступ на другой локальный диск, закрыть доступ к реестр nisan Microsoft Windows 2000/XP 10 12-09-2009 21:14




 
Переход