Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Windows > Помогите. Батник


Автор: Elbrus 3.11.2005, 20:09
Друзья!

Скажу прямо, я в этих вопросах ламер. Покажите пожалуйста пример батника, завершающего все процессы на компьютере, кроме Процесс 1, Процесс 2.


Заранее благодарю.

С уважением El.

Автор: nikitao 3.11.2005, 20:43
Elbrus,в cmd есть такая команда killtask,прописываешь killtask /?,смотришь синтаксис и делаешь батничек. smile

Автор: Void 3.11.2005, 21:28
nikitao
taskkill, если уж быть точным smile (Или это только в XP?)

Автор: Elbrus 3.11.2005, 21:40
В том то и дело дорогие товарисчи. Что я не могу разобраться в самом helpe.

Привожу описание на в.с:

Завершает одно или несколько заданий или процессов. Процессы могут быть уничтожены кодом процесса или именем образа.

Синтаксис
taskkill [/s компьютер] [/u домен\пользователь [/p пароль]]] [/fi имя_фильтра] [/pid код_процесса]|[/im имя_образа] [/f][/t]

Параметры
• /s компьютер
Указывает имя или IP-адрес удаленного компьютера (не используйте обратную косую черту). По умолчанию используется локальный компьютер.
• /u домен\
пользователь
Выполнение команды с разрешениями учетной записи пользователя, который указан как пользователь или домен\пользователь. По умолчанию используются разрешения текущего вошедшего пользователя компьютера, с которого поступила эта команда.
• /p пароль
Определяет пароль учетной записи пользователя, заданной параметром /u.
• /fi имя_фильтра
Задает типы процессов, которые следует завершить и не следует. Допустимыми именами фильтров, операторами и значениями являются следующие.
Имя Значение
Hostname Любая допустимая строка
Status RUNNING|NOT RESPONDING
Imagename Любая допустимая строка
PID Любое положительное число
Session Любой действительный номер сеанса
CPUTime Допустимое время в формате чч:мм:сс. Компоненты мм и сс должны иметь
значения от 0 до 59, а чч может быть любым значением числа без знака
Memusage Любое целое число
Username[/bold] Любое действительное имя пользователя ([домен]пользователь).
Services Любая допустимая строка
Windowtitle Любая допустимая строка

Используются операторы eg, ne, gt, lt, ge, le.
• /pid код_процесса
Указывает код процесса, который необходимо завершить.
• /im имя_образа
Указывает имя образа процесса, который необходимо завершить. Используйте подстановочный знак (*) для указания всех имен образа.
• /f
Указывает, что процесс(ы) должен быть принудительно завершен. Этот параметр не действует для удаленных процессов, все удаленные процессы завершаются принудительно.
• /t
Задает завершение всех дочерних процессов вместе с родительским, такое действие обычно известно как уничтожение дерева.
• /?Отображает справку в командной строке.


Примечания
• Подстановочный символ (*) принимается только при указании вместе с фильтрами.
• Завершение удаленных процессов всегда выполняется принудительно независимо от указания параметра /f.
• Указание имени компьютера в качестве фильтра HOSTNAME приведет к завершению работы и остановке всех процессов.
• Используйте команду tasklist для определения кода завершаемого процесса.
• Команда taskkill является заменой средству Kill.

Примеры
Далее приведены примеры использования команды taskkill:
taskkill /pid 1230 /pid 1241 /pid 1253
taskkill /f /fi "USERNAME eq NT AUTHORITY\SYSTEM" /im notepad.exe
taskkill /s srvmain /f /im notepad.exe
taskkill /s srvmain /u maindom\hiropln /p p@ssW23 /fi "IMAGENAME eq note*" /im *
taskkill /s srvmain /u maindom\hiropln /fi "USERNAME ne NT*" /im *
taskkill /f /fi "PID ge 1000" /im *


Дело в том что завершаемые процессы могут быть любые, будь это winword, diablo или notepad, а процессы которые не надо завершать постоянны.

P.S. : Я же говорю что ламер в командной строке, и хелп мне мало поможет smile

С большим уважением El.
Заранее благодарю.

Автор: Void 3.11.2005, 21:47
taskkill /FI "IMAGENAME ne winword.exe" /FI "IMAGENAME ne notepad.exe"

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

Автор: nikitao 3.11.2005, 22:11
Цитата(Void @ 3.11.2005, 22:28)
taskkill, если уж быть точным  (Или это только в XP?)

Да лопухнулся,а в старых Windax если не ошибаюсь вместо taskkill было просто KILL.

Автор: Elbrus 4.11.2005, 01:03
Цитата
Проблема в том, что такая команда начнет прибивать и системные процессы. Пусть у нее и не хватит на все прав, но что из этого получится, не знаю, экспериментировать сейчас не хочу.


Void Я догадался, так эти все системные процессы, и будут в списке тех которые не надо завершать (и еще пара других).

Цитата
taskkill /FI "IMAGENAME ne winword.exe" /FI "IMAGENAME ne notepad.exe"


А это пример, как я понимаю (если понимаю smile ), пример завершения определенных процессов.

Еще раз формулирую задачу: Батник, завершающий все процессы (процессы каждый раз разные), кроме системных и конкрентно "процесс 1", "процесс 2".

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



Не могу написать сам. Очень прошу помочь!. smile



С уважение Еl.

Автор: Void 4.11.2005, 09:14
Elbrus
Я же написал выше команду, которая прибьет все, кроме winword и notepad:
Цитата
taskkill /FI "IMAGENAME ne winword.exe" /FI "IMAGENAME ne notepad.exe"

Фильтров можно добавить сколько угодно.

Автор: Elbrus 4.11.2005, 09:34
А вот как, тогда я просто прогнал. Извиняюсь.

То что надо!


Мои благодарности.

El.

smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)