|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] как в cmd получить список процессов с подстрокой |
|
CMD/BAT - [решено] как в cmd получить список процессов с подстрокой
|
Ветеран Сообщения: 526 |
Профиль | Отправить PM | Цитировать Здравствуйте,
интересует как в Windows 7 получить в консоли список процессов содержащий подстроку. Пробовал это: но получается: Однако, если явно указать: tasklist /FI "Имя образа eq avp.exe", то все прокатыает, но я заранее не знаю ни ID процесса, ни имя образа. Моя задача: найти через консоль все идентификаторы процессов, содержащие подстроку office и завершить их. |
|
Отправлено: 11:42, 19-04-2011 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата VictorSh:
|
|
Отправлено: 11:57, 19-04-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата VictorSh:
|
|
Отправлено: 13:07, 19-04-2011 | #3 |
Ветеран Сообщения: 526
|
Профиль | Отправить PM | Цитировать Спасибо большое!
В общих чертах понятно, но есть вопросы по работе команды. Не совсем понятно с "tokens = 2". Подстрока в IN выводит список процессов без заголовка в таблицу, а потом с помощью конвейера передаются команде find, которая ищет подстроку без учета регистра. А дальше, чего то не понятно. Читал в for /? что-то не дошло. То есть мы выбираем из результата выполнения find только вторую подстроку, а строка разделена на запятые (delims = ,)? Потом записываем результат в переменную a и завершаем процесс. А как быть, если их много (результатов): то есть сдедующий процесс find ищет не с начала таблицы, а в нем что сохраняется типа offset, на котором find остановилась в прошлый раз? то есть он ищет на следующем шаге цикла не с начала таблицы, а с места предыдцщего результата поиска? Или он убил процесс, а потом заново в новой таблице ищем и поэтому находим не тот же самый процесс, а уже другой? И еще простой вопрос: а где указано условие завершения цикла, я просто не эксперт в написании скпиртов, писал на с++, там понятно for (инициализация, проверка условия, что делать на следующем шаге) {тело цикла}, а тут как то по-другому. Или если find не найдет ничего, то он выдаст false и все закончится? |
Последний раз редактировалось VictorSh, 19-04-2011 в 14:54. Отправлено: 14:43, 19-04-2011 | #4 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать VictorSh, всё гораздо проще: "FOR /F" построчно перебирает результат команды в скобках: TASKLIST + FIND (который работает как фильтр строк по условию вхождения заданной подстроки), каждую строку делит на токены по символу "," , берет 2-й токен (PID, соответствует %a) и выполняет для каждой строки команду "TASKKILL /PID %a"
|
|
Отправлено: 15:55, 19-04-2011 | #5 |
Ветеран Сообщения: 526
|
Профиль | Отправить PM | Цитировать спасибо)
Цитата amel27:
Это похоже это аналог цикла PHP foreach для перебора всех элементов массива. |
|
Последний раз редактировалось VictorSh, 19-04-2011 в 22:53. Отправлено: 21:59, 19-04-2011 | #6 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать |
Отправлено: 03:13, 20-04-2011 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата VictorSh:
Цитата VictorSh:
Я бы уточнил (на случай, если кто неправильно поймёт контекст), что именно до реального конца файла, «for /f» не рассматривает символ «\0x1a» в качестве конца файла (т.е., EOF, в примере выше, != \0x1a). И, скорее, что-то наподобие fgets(), нежели _fgetchar(). |
||
Отправлено: 04:57, 20-04-2011 | #8 |
Ветеран Сообщения: 526
|
Профиль | Отправить PM | Цитировать Теперь кажется все понял Спасибо большое, просветили! Тема решена.
|
Отправлено: 12:09, 20-04-2011 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Как получить список пользователей | Vagac | AutoIt | 2 | 06-11-2009 12:24 | |
[решено] Как выгрузить список процессов в файл: | Bugs | Microsoft Windows NT/2000/2003 | 3 | 08-03-2008 19:53 | |
Как получить список пользователей AD? | Evgeniy15 | Microsoft Windows NT/2000/2003 | 10 | 09-04-2007 18:03 | |
Удаленно получить список процессов | Dronec | Сетевые технологии | 1 | 25-09-2004 12:49 | |
Удаленно получить список процессов | Dronec | Защита компьютерных систем | 4 | 24-09-2004 14:41 |
|