Вы можете использовать tasklist
(встроенный) или PsList
(часть PsTools). Оба поддерживают удаленные компьютеры. Мой пример будет использовать tasklist
(кому не нравятся встроенные модули?) на локальном компьютере, так как это все, что я должен проверить на данный момент. Вы можете добавить правильные аргументы для подключения к удаленному компьютеру; проверить доступные аргументы с помощью tasklist /?
,
tasklist /FI "IMAGENAME eq processname.exe" | find /I "processname.exe"
if ERRORLEVEL 1 goto NotRunning else goto Running
:NotRunning
echo The program is not running.
goto :eof
:Running
echo The program is running.
goto :eof
Сломать:
список tasklist
используется для перечисления всех процессов, которые соответствуют указанному имени. Вы можете использовать подстановочные знаки (*
) для частичного совпадения.
find
используется для проверки того, было ли имя процесса частью вывода tasklist
. Он установит уровень errorlevel
(в основном, возвращаемое значение) в 1 ( ошибка ), если он не найден, в противном случае 0 (успешно). Это используется, потому что легче проверить уровень ошибки, чем текстовый вывод списка tasklist
если в if
.
Затем мы используем goto
для перехода к нужному блоку, тем самым разделяя выполнение в зависимости от того, запущен процесс или нет. Вы также можете просто запустить команды в операторе if
. goto :eof
основном означает переход в конец программы (EOF = End Of File), то есть выход.