Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 2
1

Завершение части одинаковых процессов через .bat

28.11.2018, 20:59. Показов 5149. Ответов 14

Author24 — интернет-сервис помощи студентам
Добрый вечер. Возник такой вопрос: как закрыть через taskkill или другими методами, к примеру, 10 процессов одинаковых, когда открытых их у меня 40. То есть, есть 40 рабочих процессов с именем exec.exe, нужно закрыть из них только 10. Как сделать такое? Буду очень благодарен за помощь.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2018, 20:59
Ответы с готовыми решениями:

Завершение всех запущенных процессов из находящегося в текстовом файле списка запрещенных к запуску процессов
пожалуйста помогите написать батник. Задать в текстовом файле список процессов, запрещенных к...

Мониторинг и завершение вновь запущенных системных процессов/приложений
Здравствуйте уважаемые форумчане! Задача: При старте генерируется файл со списком запущенных...

Скрипт на завершение процессов и запись лог файла - EXL/WORD/1C
Помогите пожалуйста, домен по ночам начал падать от того что его начали перегружать EXL/WORD/1C (96...

Завершение сразу нескольких процессов и удаление связанных с ними разделов реестра
Здравствуйте. Существует такая проблема, думаю она встречалась многим.(Т.е иногда скачав...

14
1047 / 531 / 66
Регистрация: 16.01.2013
Сообщений: 4,093
28.11.2018, 23:24 2
DanilGr,

/PID процесс - Идентификатор процесса, который требуется завершить. Используйте TaskList, чтобы получить PID.

Добавлено через 2 минуты
Более подробно здесь инструкция
0
5984 / 1993 / 323
Регистрация: 10.12.2013
Сообщений: 6,873
29.11.2018, 00:04 3
Мужика ведут расстреливать.
— За что его?
— Да ни за что. Говорят, вроде два одинаковых оказалось…

(c) Андрей Кнышев
0
4334 / 2124 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
29.11.2018, 00:44 4
если вот прям именно на bat:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
@echo off
set "p=calc.exe"
:: Граничное число одноименных процессов при достижении которого будет производиться чистка лишних
set lim=10
:: Число процессов которые надо удалить
set delpr=2
 
for /f %%a in ('tasklist^|find /c /i "%p%"') do set "chpr=%%a"
if %chpr% geq %lim% (set /a pr=chpr-delpr) else (echo Не достигли предела& pause& goto :eof)
for /f "skip=%pr% tokens=2 delims=," %%a in ('tasklist /fo csv^|find /i "%p%"') do >nul taskkill /f /pid "%%~a"
pause
Примечание (с моей точки зрения)
set /a pr=chpr-delpr
При 12-ти одноименных процессах удалит 12-(10-2) 4 процесса, останется 8, как если бы из 10 допустимых удаляли 2
1
6228 / 2670 / 1051
Регистрация: 06.06.2017
Сообщений: 9,127
29.11.2018, 01:02 5
Лучший ответ Сообщение было отмечено DanilGr как решение

Решение

Windows Batch file
1
2
3
4
5
6
@echo off&setlocal enabledelayedexpansion
:: Число завершаемых процессов:
set/a n=10
for /f "skip=1 tokens=4" %%p in ('qprocess notepad.exe') do set/a c+=1&set "str=!str! /PID %%p"&if !c!==!n! goto:next
:next
taskkill/f!str!>nul
2
4334 / 2124 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
29.11.2018, 02:28 6
Поправка к коду в п4 (пока проверял, забыл исправить)
выражение и в коде и в примечании:
set /a pr=chpr-delpr
заменить на:
set /a pr=lim-delpr
0
1885 / 1107 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
29.11.2018, 11:16 7
Цитата Сообщение от DanilGr Посмотреть сообщение
как закрыть через taskkill или другими методами, к примеру, 10 процессов одинаковых, когда открытых их у меня 40
Windows Batch file
1
powershell -c "&{ps calc | select -f 10 | kill}"
Добавлено через 55 минут
+ ещё один пример:

Windows Batch file
1
powershell -c "(ps calc)[0..9] | kill"
0
4334 / 2124 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
29.11.2018, 13:38 8
KDE777, да и FlasherX, может ТС устроит и так, но все же в моем понимании, но главное в условии сказано:
Цитата Сообщение от DanilGr Посмотреть сообщение
когда открытых их у меня 40
возможно ТС и сам еще не осознал всю недосказанную полноту своего условия, но
надо, видимо, понимать что закрыть не просто 10 из любого более этого открытого числа процессов, а превышающего 10, но тем не менее конкретного (граничного, накопившегося) числа выше этого.
Я поэтому и делал такую проверку и вносил поправку в п6
при set /a pr=chpr-delpr и 12-ти процессах, убито будет жестко 2 (но и в этом случае только при более или равно 10)
при set /a pr=lim-delpr и 12-ти процессах, превышено на 2 от заданного, поэтому 12-(10-2)=4 процесса

и получается при открытых 10-ти процессах будут убиты все 10?
0
1885 / 1107 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
29.11.2018, 13:43 9
Цитата Сообщение от alpap Посмотреть сообщение
надо, видимо, понимать что закрыть не просто 10 из любого более этого открытого числа процессов, а превышающего 10, но тем не менее конкретного (граничного, накопившегося) числа выше этого.
тогда так:

Windows Batch file
1
powershell -c "ps calc | select -skip 10 | kill"
1
4334 / 2124 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
29.11.2018, 13:53 10
KDE777,
ну пропустили мы 10, открыто тоже 10 - допустим, ничего не удалили
пропустили 10, открыто 11 - удалили 1
думаю такой вариант должен устроить ТС, если у FlasherX такой же подход, то тоже должен подходить.


Добавлено через 2 минуты
хотя очередной раз вчитываясь в условие все же понимаю что должно быть задано два параметра, число возможных и процентовка из них на удаление.
0
1885 / 1107 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
29.11.2018, 14:23 11
Цитата Сообщение от alpap Посмотреть сообщение
ну пропустили мы 10, открыто тоже 10 - допустим, ничего не удалили
пропустили 10, открыто 11 - удалили 1
Да, именно так отработает пример из #9, либо пример из #7 закрывает просто 10 указанных (или меньше, если 10 нет).

Или "как закрыть через taskkill или другими методами, к примеру, 10 процессов одинаковых, когда открытых их у меня 40. То есть, есть 40 рабочих процессов с именем exec.exe, нужно закрыть из них только 10." - можно трактовать, как-то ещё?

Добавлено через 2 минуты
Цитата Сообщение от alpap Посмотреть сообщение
хотя очередной раз вчитываясь в условие все же понимаю что должно быть задано два параметра, число возможных и процентовка из них на удаление.
Думаю, что в таком ключе, достаточно только процентовки на удаление, т.к. "число возможных" это уже существующий факт.

Добавлено через 15 минут
Удаляем $p процентов от числа запущенных $name

PowerShell
1
2
3
$p = 25 # % удаляемых $name
$name = 'calc'
if ($ps = ps $name -EA 0) {$ps | select -f ([math]::Round($p*$ps.Count/100)) | kill}
1
6228 / 2670 / 1051
Регистрация: 06.06.2017
Сообщений: 9,127
29.11.2018, 20:17 12
Цитата Сообщение от alpap Посмотреть сообщение
но главное в условии сказано:
Почему главное-то, если написано "к примеру"? Никаких доп. условий нет. Зачем додумывать за автора? Пусть отпишется сперва.
0
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 2
29.11.2018, 22:30  [ТС] 13
Нужно сделать закрытие первых 10-ти процессов их всех(к примеру: 40-ка). На PowerShell это выглядит так:
PowerShell
1
Get-process exec.exe|select -first 10 | stop-process -force
Мне же нужно на bash
0
6228 / 2670 / 1051
Регистрация: 06.06.2017
Сообщений: 9,127
30.11.2018, 03:19 14
bash — это из другой оперы. В заголовке .bat (batch file). См. мой код выше.
0
1885 / 1107 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
30.11.2018, 10:07 15
Цитата Сообщение от DanilGr Посмотреть сообщение
На PowerShell это выглядит так
Цитата Сообщение от DanilGr Посмотреть сообщение
Мне же нужно на bash
Знаете как сделать на PowerShell, тогда и поставьте его на Linux
1
30.11.2018, 10:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2018, 10:07
Помогаю со студенческими работами здесь

Помогите с запуском bat-файла через bat-файл
Расклад таков: 1. У меня есть bat файл(help.bat). 2. Нужно написать ещё один чтобы он запускал...

Как средствами GPO запретить завершение некоторых процессов на всех компьютерах домена?
Как можно запретить завершение некоторых процессов во всех компьютерах домена. Чтобы нельзя было...

Завершение процессов
Ребята ! нужна ваша помощь !!! Как закрыть все процессы кроме определенных ??? Желательно на...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru