如何使用Taskkill不断变化的PID?

时间:2015-08-11 19:15:25

标签: cmd pid

我试图杀死NlaSvc以强制域重新连接而不重新启动或中断网络。

我可以使用taskkill / F / IM 8076(或任何数字)执行此操作,但PID始终在变化。遗憾的是,在svchost.exe下,我不想结束此过程......

如何在不重新启动,断开适配器等的情况下重新启动NlaSvc ... taskkill可以工作,但前提是我知道PID。

有什么想法吗?

UPDATE 谢谢你的解决方案!为了某种原因,我需要添加两个%%才能使它工作。 下面是完整的蝙蝠,提升uac,然后运行我需要的。

:::::::::::::::::::::::::::::::::::::::::
:: Automatically check & get admin rights
:::::::::::::::::::::::::::::::::::::::::
@echo off
CLS
ECHO.
ECHO =============================
ECHO Running Admin shell
ECHO =============================

:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )

:getPrivileges
if '%1'=='ELEV' (shift & goto gotPrivileges)
ECHO.
ECHO **************************************
ECHO Invoking UAC for Privilege Escalation
ECHO **************************************

setlocal DisableDelayedExpansion
set "batchPath=%~0"
setlocal EnableDelayedExpansion
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%    \OEgetPrivileges.vbs"
ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs"
"%temp%\OEgetPrivileges.vbs"
exit /B

:gotPrivileges
::::::::::::::::::::::::::::
::START
::::::::::::::::::::::::::::
setlocal & pushd .


cmd /c FOR /F "usebackq tokens=2 skip=3" %%i IN (`tasklist /fi "services eq NlaSvc"`) DO taskkill /F /PID %%i&net start NlaSvc

1 个答案:

答案 0 :(得分:1)

试试这个:

cmd / c FOR / F“usebackq tokens = 2 skip = 3”%% i IN(tasklist /fi "services eq NlaSvc")DO taskkill / PID %% i