Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Определить запущен процесс или нет, если да то остановить и удалить. (http://forum.oszone.net/showthread.php?t=258751)

voler 16-04-2013 15:51 2133779

Определить запущен процесс или нет, если да то остановить и удалить.
 
Добрый день.

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


Подскажите.
Пример как определить:
Код:

tasklist /fi "IMAGENAME eq lightscreen.exe"

Iska 16-04-2013 17:52 2133850

Код:

@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 2134213

Но он выводит путь+сам процесс. А как получить именно саму директорию?

Anonymоus 17-04-2013 09:29 2134254

Цитата:

Цитата voler
А как получить именно саму директорию? »

Исправить всего одну строку:
Код:

if defined sExecutablePath Echo !sExecutablePath:%sImageName%=!

voler 17-04-2013 09:45 2134266

Цитата:

Цитата Anonymоus
Исправить всего одну строку: »

Как потом передать полученные данные в переменную?

Iska 17-04-2013 14:06 2134415

Код:

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

CyberMuesli 21-04-2013 13:10 2136926

Цитата:

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

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

Iska 21-04-2013 23:42 2137318

Только кавычки ещё нужны.

Конечный примерный вид:
Код:

@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



Время: 11:33.

Время: 11:33.
© OSzone.net 2001-