go语言根据exe进程的执行目录杀死进程

本文介绍了一种方法,通过指定进程名和执行路径,在Windows下精确地杀死多个同名exe进程,如同时运行的Max2014和Max2016。该函数接受进程名(appName)和执行路径(appPath),并返回成功关闭进程的结果。
摘要由CSDN通过智能技术生成

/* @desc 针对window下启动多个name相同但执行路径不同的exe进程,可根据exe进程名和进程的执行路径杀死进程

实际场景:同时启动max2014和max2016等多个max程序,想关掉其中某一个版本的Max,只能根据pid去关,pid则可以用name和执行路径去获取

@param appName string 进程名(例如:3dmax.exe)

@param appPath string 进程执行路径(例如:`C:\Program Files\Autodesk\3ds Max 2014\3dsmax.exe`)

@return bool 是否关掉,如果没有匹配到则也返回true

*/

func killProcessBynameAndPath(appName string,appPath string) (bool) {

//根据exe名称列出进程的具体信息

cmd := exec.Command("cmd", "/C", "wmic process where name='"+appName+"' get processid,executablepath,name")

output, _ := cmd.Output()

outputstr := string(output)

outputstr2 := strings.Split(outputstr,"\r\r\n")

for i,v := range outputstr2{

//第一个是列表名,直接跳过

if i>0 {

temps := strings.Split(v," ")

if len(temps)>=3 { //如果大于3,说明有执行路径,进程名,pid

if appPath == temps[0]{ //0是执行路径,如果传递进来的执行路径相等

for ii,vv := range temps{

if ii==2{ //下标是2的是pid,根据pid杀死进程

maxCloseC := exec.Command("taskkill.exe", "/pid", vv, "-t","-f")

maxCloseErr := maxCloseC.Run()

if maxCloseErr != nil {

return false

}

return true

}

}

}

}

 

}

}

return true

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值