如何在批处理脚本中使用taskkill终止子进程?

qod*_*nja 0 windows command-line kill batch-file task

我在一个变量中捕获PID,我后来杀了它

  IF NOT "%SERVICE_PID%" == 0 taskkill /pid %SERVICE_PID% /t /f 
Run Code Online (Sandbox Code Playgroud)

虽然每次我在批处理文件中执行此操作时都会使计算机重新启动,因为它会导致某些系统进程死亡

服务pid应该是从cmd启动的用户定义服务

我不明白为什么它一直让我的机器呱呱叫.

当我在命令行上运行"taskkill/pid%SERVICE_PID%/ t/f"时它工作正常!= /

救命!

设置SERVICE_PID

FOR /F "tokens=4 delims= " %%A IN ('sc queryex myservice ^|FIND "PID"')
 DO SET SERVICE_PID=%%A
Run Code Online (Sandbox Code Playgroud)

小智 5

我发现使用它会获得正确的PID:

for /f "tokens=1,2,3,4 delims=/ " %%a in ('sc queryex ServiceName ^|FIND "PID"') do set PID=%%c
taskkill /pid %PID% /t /f
Run Code Online (Sandbox Code Playgroud)

然后它就像一个魅力.