Как узнать какие приложения запущены через cmd
Как я могу проверить, запущено ли приложение из пакетного (хорошо cmd) файла?
Мне не нужно запускать другой экземпляр, если программа уже запущена. (Я не могу изменить приложение, чтобы сделать его только один экземпляр.)
Также приложение может работать как любой пользователь.
Еще одна возможность, которую я придумал, вдохновленная использованием grep :
Не нужно сохранять дополнительный файл, поэтому я предпочитаю этот метод.
это работало для меня хорошо (Windows XP SP3). ИМХО, это самый элегантный способ из всех предложенных здесь, с использованием только инструментов, поставляемых с Windows У меня была проблема с синтаксисом этой командной строки. Я изменил его на tasklist /FI "IMAGENAME eq winword.exe" 2>NUL | find /I /N "winword.exe">NUL / if %ERRORLEVEL%==1 goto wordnotrunning для того, чтобы заставить его работать (подозревая цитату вокруг частей if Помните, что в других языковых версиях XP имена фильтров были переведены в код, но не в /? экран справки . Так, например, IMAGENAME в польской версии есть NAZWA_OBRAZU . Под Win7 мне пришлось поменять его на tasklist /FI "IMAGENAME eq myapp.exe" /NH | find /I /N "myapp.exe" >NUL Первый NUL кажется ненужным, я понятия не имею, для чего нужен «2», / NH не обязателен. список задач всегда выходит со статусом 0 независимо от того, находит ли он какие-либо подходящие задачи, поэтому он сам по себе бесполезен. Поскольку вы все равно должны использовать find (или findstr) для проверки его вывода, нет смысла использовать фильтры списка задач. Просто сделай список задач | найти "myprog.exe"> nul: && goto foundit или somesuch. Вам может понадобиться параметр / v (подробный) для списка задач.Вот как я это сделал:
Приведенное выше откроет Блокнот, если он еще не запущен.
Изменить: Обратите внимание, что это не найдет приложения, скрытые от списка задач. Это будет включать любые запланированные задачи, выполняемые от имени другого пользователя, поскольку они автоматически скрываются.
Изменение формата списка задач на CSV или на что угодно, кроме таблицы, важно, потому что это макет (таблица) списка задач по умолчанию усекает длинные имена изображений, что нарушает логику. Это решение не будет работать в Vista, потому что TASKLIST производит некоторые выходные данные, даже если процесс не найден. Я предполагаю, что то же самое верно для Windows 7. не работает в Windows 10. search.log содержит «INFO: не выполняются задачи, соответствующие указанным критериям». и блокнот не запускаетсяМне нравится решение Chaosmaster! Но я искал решение, которое не запускает другую внешнюю программу (например, find.exe или findstr.exe ). Поэтому я добавил идею из решения Мэтта Лейси, которое создает временный файл, которого можно избежать. В конце я смог найти довольно простое решение, поэтому я поделился им .
Это хорошо работает для меня .
Это решение хорошо работает - проверено в Windows 8.1. Я заметил, что он чувствителен к регистру. @LordScree Поскольку я работаю в un * x системах, чувствительность к регистру мне подходит! Я даже установил файловую систему, чтобы включить имена файлов с учетом регистра. ;) Хорошо работает для меня - проверено в Windows 7 X64 Это не работает, если в имени приложения есть пробел, так как% x оказывается частью имени приложения до первого пробела. Возможным решением было бы проверить, не найдено ли приложение, вместо этого, проверив% x == INFO: но я не знаю, на каких версиях Windows это будет работать или есть лучшее решение.Предложение npocmaka использовать QPROCESS вместо TASKLIST велико, но его ответ настолько велик и сложен, что я чувствую себя обязанным опубликовать довольно упрощенную версию, которая, я думаю, решит проблему большинства неопытных пользователей:
Приведенный выше код был протестирован в Windows 7 с пользователем с правами администратора.
Я просто использовал эту идею, чтобы дважды остановить автоматизированный процесс, и это сработало как шарм! Должен сказать, что в отличие от этой команды, решения для списка задач не только выглядят слишком сложными для такого простого запроса, но и запускают примерно секунду и используют тонны процессора! Это намного лучше, также работает без прав администратора (Windows Server 2012). Это, кажется, самое простое и лучшее решение (по крайней мере для меня), поскольку оно работает как есть, когда в имени приложения есть пробелы. Мне любопытно, каковы ограничения этого решения и почему у него нет больше голосов.В Windows вы можете использовать инструментарий управления Windows (WMI), чтобы убедиться, что не запущены приложения с указанной командной строкой, например:
wmic process where (name="nmake.exe") get commandline | findstr /i /c:"/f load.mak" /c:"/f build.mak" > NUL && (echo THE BUILD HAS BEEN STARTED ALREADY! > %ALREADY_STARTED% & exit /b 1)
Обратите внимание, что WMIC требует административных привилегий; если у вас его нет, а Only the administrator group members can use WMIC.EXE. затем Reason:Win32 Error: Access is denied. я думаю, что это лучшее решение, потому что wmic дает вам полную запущенную командную строку и предоставляет другую информацию . Это на самом деле прекрасно работает. Просто! Только знайте, что это чувствительно к регистру, если вы не добавите /i . это работает для меня в Windows 7. 2-я строка - это каталог, в котором находится программа, а не сама программа.Ответ TrueY показался мне самым элегантным решением, однако мне пришлось немного повозиться, потому что я не понимал, что именно происходит. Позвольте мне все прояснить, чтобы сэкономить время для следующего человека.
Измененный ответ TrueY:
Во всяком случае, я надеюсь, что это помогает. Я знаю, что иногда чтение пакетной / командной строки может сбивать с толку, если вы новичок, как я.
Ответ предоставляется Matt Lacey работает для Windows XP. Однако в Windows Server 2003 строка
ИНФОРМАЦИЯ: Не выполняются задачи, соответствующие указанным критериям.
который затем читается при запуске процесса.
У меня нет опыта работы с пакетными сценариями, поэтому мое решение состоит в том, чтобы затем искать имя процесса в search.log файле и закачивать результаты в другой файл и искать его для любого вывода.
Я надеюсь, что это помогает кому-то еще.
Это работает для Win 2008. +1 для Нет запущенных задач, которые соответствуют указанным критериям.Я вроде WMIC и TASKLIST инструментов , но они не доступны в доме / основные изданиями windows.Another способа является использование QPROCESS команд доступны на почти каждое окно машины (для тех , которые имеют терминальные услуги - Я думаю , что только выиграть XP без SP2, так practialy каждого окна машины):
QPROCESS Команда не настолько мощна, как TASKLIST и ограничена отображением только 12 символов имени процесса, но ее следует учитывать, если TASKLIST она недоступна.
Более простое использование, когда в качестве аргумента используется имя процесса ( .exe суффикс является обязательным в этом случае, когда вы передаете имя исполняемого файла):
Разница между двумя способами QPROCESS использования заключается в том, что QPROCESS * будут перечислены все процессы, в то время как QPROCESS some.exe будут фильтроваться только процессы для текущего пользователя.
Использование WMI объектов через exe- WMIC файл сценария Windows вместо этого также является опцией. Его следует запускать также на каждой машине Windows (исключая те, где WSH выключен, но это редкий случай). Здесь находится файл bat, в котором перечислены все процессы через WMI классы и могут использоваться вместо QPROCESS приведенного выше сценария (это гибрид jscript / bat и должен быть сохранен как .bat ):
И модификация, которая проверит, запущен ли процесс:
Два варианта могут быть использованы на машинах, которые не имеют TASKLIST .
Конечная техника использует MSHTA . Это будет работать на каждой машине с Windows от XP и выше и не зависит от настроек хоста скрипта Windows. MSHTA хотя вызов может немного снизить производительность (опять же следует сохранить как bat):
Способов управлять процессами в Windows предостаточно, и командная строка занимает в них далеко не первое место. Однако иногда бывают ситуации, когда все остальные инструменты кроме командной строки недоступны, например некоторые вредоносные программы могут блокировать запуск Task Manager и подобных ему программ. Да и просто для общего развития полезно знать способы управления компьютером из командной строки.
Если просто набрать команду tasklist в командной строке, то она выдаст список процессов на локальном компьютере.
По умолчанию информация выводится в виде таблицы, однако ключ /fo позволяет задать вывод в виде списка или в формате CSV, а ключ /v показывает более подробную информацию о процессах, например команда tasklist /v /fo list выведет подробное описание всех процессов в виде списка.
Список получится довольно большой, поэтому попробуем уточнить запрос. Для этого используем ключ /fi , который позволяет использовать фильтры для вывода данных, например команда tasklist /fi ″username eq user″ /fi ″memusage le 40000″ выводит список процессов пользователя user, которые потребляют не больше 40Мб памяти.
Найдя процессы, которые необходимо завершить, воспользуемся командой taskkill. Завершать процессы можно по имени, идентификатору процесса (PID) или задав условия с помощью фильтров. Для примера запустим несколько экземпляров блокнота (notepad.exe) и попробуем завершить его разными способами.
Ключ /f завершает процесс принудительно, а /t завершает все дочерние процессы.
Полную справку по командам tasklist и taskkill можно получить, введя их с ключом /?
Чтобы не выводить весь список процессов можем воспользоваться командлетом Where-Object, который задает фильтр для выводимой информации. Для примера выведем список процессов, которые загружают процессор и отсортируем их по возрастанию нагрузки с помощью команды:
Get-Process | where | sort cpu
С помощью PowerShell мы можем получить любую информацию о любом процессе. В качестве примера возьмем процесс cmd и выведем список его свойств командой:
Get-Process -Name cmd | Get-Member -Membertype property
Выбираем те свойства, что нам интересны ( в примере имя и ID процесса, путь к файлу, используемые модули и время запуска) и выводим их в виде списка командой:
Get-Process -Name cmd | Format-List name, id, path, modules, starttime
Таким образом мы можем посмотреть когда и кем был запущен процесс, сколько он потребляет ресурсов, где находится исполняемый файл и еще много различной информации.
Для завершения процесса в PowerShell есть командлет Stop-Process. Он завершает указанный процесс по его имени или идентификатору. Однако мы поступим по другому и передадим результат выполнения командлета Get-Process по конвейеру:
Get-Process | where | Stop-Process
Get-Process не может показать процессы на удаленном компьютере, для этого воспользуемся командлетом Get-WmiObject , например посмотрим процессы на удаленном компьютере PC командой:
Get-WmiObject win32_process -computername PC | ft name, processid, description
Для боле полного ознакомления с PowerShell можно воспользоваться встроенной справкой, для вызова справки нужно набрать Get-Help ″имя командлета″
Ну и для полноты обзора рассмотрим еще одно средство для управления процессами из командной строки. Это утилиты Pslist и Pskill входящие в состав пакета PSTools от компании Sysinternals.
Эти утилиты не требуют специальной установки, достаточно просто скопировать их на диск. Для запуска нужно зайти в папку с утилитами и ввести в командной строке необходимую команду.
Особенностью утилиты Pslist является режим task-manager. В этом режиме информация автоматически обновляется, причем можно задать время работы и интервал обновления. Запускается режим ключом -s , например командой tasklist -s -r 10 запускаем режим программу в режиме task-manager с обновлением раз в 10 сек.
Завершение процесса программой pskill предельно просто, вводим команду и имя (или ID) процесса и все.
Справку по утилитам Pslist и Pskill можно посмотреть, введя команду с ключом /?
И еще, все манипуляции с процессами необходимо выполнять с правами администратора, для этого командную строку требуется запускать с повышением привилегий.
ПРИМЕЧАНИЕ. Информация в этом руководстве относится к Windows 10, Windows 8.1 и Windows 7, и команды работают как в командной строке, так и в PowerShell.
1. Используйте команду systeminfo для получения системной информации
В Windows есть встроенная команда для проверки конфигурации системы. Он называется systeminfo и, когда вы его запускаете, показывает длинный список информации о вашем компьютере. Откройте командную строку или PowerShell, введите systeminfo и нажмите Enter.
Вы видите, что происходит? Команда systeminfo отображает список деталей о вашей операционной системе, компьютерном оборудовании и программных компонентах. Вы видите детали, такие как версия операционной системы, установленной на вашем компьютере, состояние вашей оперативной памяти или процессора, который у вас есть. Также есть некоторая информация о сети, такая как IP и MAC- адреса ваших сетевых карт.
2. Используйте команду tasklist, чтобы увидеть список запущенных процессов в Windows
Чтобы просмотреть список запущенных процессов, вы можете использовать команду tasklist, как в командной строке, так и в PowerShell. Введите список задач и нажмите Enter.
Команда должна вывести список, аналогичный приведенному выше, с подробной информацией об именах запущенных процессов, их PID (идентификатор процесса) и используемой ими памяти.
3. Используйте команду taskkill, чтобы остановить процесс
Чтобы убить или остановить запущенный процесс из командной строки или PowerShell, вы можете использовать команду taskkill . Давайте предположим, что вы хотите остановить OneDrive. Его процесс называется OneDrive.exe. Чтобы убить его, вы должны запустить команду taskkill /f /im OneDrive.exe . Параметр /f указывает Windows принудительно завершить процесс, а параметр /im используется для идентификации и остановки процесса путем ввода его имени.
Есть моменты, когда вам нужно открыть программу дважды или даже несколько раз. Каждое новое окно, а иногда и вкладки определенной программы (например, Firefox) создают отдельный процесс, называемый экземпляром, с прикрепленным к нему уникальным PID (идентификатор процесса).
Если вы хотите завершить процесс с PID 2492, вам нужно набрать taskkill /PID 2492 и нажать Enter.
Обратите внимание, что если вы неправильно используете команды, перечисленные в этой статье, вы рискуете потерять данные, открытые в запущенных процессах. Важно быть осторожным и иметь резервную копию ваших данных. Поэтому действуйте осторожно и не говорите, что мы вас не предупреждали. 🙂
ПРИМЕЧАНИЕ. Чтобы уничтожить любой запущенный процесс, вам нужно запустить командную строку или PowerShell от имени администратора. Если вы не знаете, как, прочитайте: 9 способов запуска программ с правами администратора в Windows .
Вам нравится использовать командную строку для проверки системной информации и управления запущенными процессами?
Вы знаете, как отобразить системную информацию вашего ПК и как остановить процессы, используя несколько текстовых команд в командной строке или PowerShell. Вы не чувствуете себя сейчас отвратительно? Если вы это сделаете, прокомментируйте ниже и расскажите, насколько вам нравится использование CMD или PowerShell. 🙂
Диспетчер задач
Ctrl + Shift + Esc
Вкладка с процессами не изменилась со времён Windows XP:
Однако, если вы на К76, вам Диспетчера мало. Согласен, продолжаем.
Список запущенных процессов из командной строки
В Windows есть встроенная командная утилита tasklist, отображающая список запущенных процессов на указанном компьютере. Как и многие другие в папке System32, tasklist принадлежит к числу административных утилит, которые могут смотреть запущенные процессы на удалённых машинах по сети. Для локального компьютера команда в консоли, запущенной от имени администратора, может, например, принять такой вид:
После этого на Рабочем столе появится текстовый файл:
в котором запущенные на момент исполнения команды будут представлены в удобочитаемом виде. Текстовый вывод не понимает кириллицы, так что я обычно использую специальные текстовые редакторы типа Notepad ++. Но, думаю, что в файле написано, понятно и так:
Или процессы можно представить в табличном формате; если есть Excel, можете просматривать процессы оттуда:
Для удалённого компьютера команда примет вид:
Как узнать список запущенных процессов из Power Shell
Информация из файла, получаемого аналогичным путём, будет немного более информативнее. Этот вариант доступен владельцам копий Windows 7/10, и командлет на отображение списка на том же Рабочем столе будет таким:
Читайте также: