PDA

Показать полную графическую версию : [решено] Определить запущен процесс или нет, если да то остановить и удалить.


voler
16-04-2013, 15:51
Добрый день.

Определить запущен процесс или нет можно с помощью tasklist, дальше taskkill.
Но вот как в cmd просмотреть от куда запущен процесс, т.е. его путь и взять этот путь в качестве переменной вопрос.
Данные действия, хочется выполнять в cmd. Скажу еще что это служба ставится и доступна на удаление из "Программы и компоненты".


Подскажите.
Пример как определить:
tasklist /fi "IMAGENAME eq lightscreen.exe"

Iska
16-04-2013, 17:52
@echo off
setlocal enableextensions enabledelayedexpansion

set sImageName=notepad.exe

for /f "usebackq delims=" %%i in (
`wmic.exe Process where "Name='%sImageName%'" get ExecutablePath /value ^| find.exe "ExecutablePath"`
) do set "s%%i"

if defined sExecutablePath echo [%sExecutablePath%]

endlocal
exit /b 0

voler
17-04-2013, 08:04
Но он выводит путь+сам процесс. А как получить именно саму директорию?

Anonymоus
17-04-2013, 09:29
А как получить именно саму директорию? »
Исправить всего одну строку:
if defined sExecutablePath Echo !sExecutablePath:%sImageName%=!

voler
17-04-2013, 09:45
Исправить всего одну строку: » Как потом передать полученные данные в переменную?

Iska
17-04-2013, 14:06
if defined sExecutablePath set sFolder=!sExecutablePath:%sImageName%=!
P.S. 2All: У данного подхода есть, конечно, подводный камень — если имя какой-то промежуточной папки совпадёт с именем образа, но практически сие маловероятное событие.

CyberMuesli
21-04-2013, 13:10
P.S. 2All: У данного подхода есть, конечно, подводный камень — если имя какой-то промежуточной папки совпадёт с именем образа, но практически сие маловероятное событие. »

for %%F in (%sExecutablePath%) do echo %%~dpF

Iska
21-04-2013, 23:42
Только кавычки ещё нужны.

Конечный примерный вид:
@echo off
setlocal enableextensions enabledelayedexpansion

set sImageName=notepad.exe

for /f "usebackq delims=" %%i in (
`wmic.exe Process where "Name='%sImageName%'" get ExecutablePath /value ^| find.exe "ExecutablePath"`
) do set "s%%i"

if defined sExecutablePath for %%i in ("%sExecutablePath%") do set sFolder=%%~dpi
echo [%sFolder%]

endlocal
exit /b 0




© OSzone.net 2001-2012