我这里用的是win10企业版,在基础功能上和家庭版区别不大
软件的icon名称和实际运行进程中的imagename可能是不一样的,我这里来举个例子,可以看到我的右下角这个软件叫Cisco AnyConnect

但是在任务管理器中,找不到这个名称的软件,又换成了另一个名称,前缀一样,后缀不一样。所以我这里统一找的办法就是,右键这个软件,点开它的properties


再点开details查看最下面的Original filename字段值,可以看到叫vpnui.exe

我们拿着这个名称到cmd中去执行命令
tasklist /fi "imagename eq vpnui.exe
可以看到能找到以下的进程pid

这里的18880就是对应刚刚查出来的PID
taskkill /pid 18880 -t -f
start命令后面的就是你的exe启动文件路径
start C:\Users\RAY\DiskD\WorkSoftwares\cisco connect\vpnui.exe
这里我用px这个软件做为演示,px这个软件启动后会有3个进程,所以我这里用了数组保存这三个进程的pid,而当我kill掉其中一个pid的时候,其余进程也会随之被kill掉,所以我这里只需要kill掉obj[0]进程就可以了,大家可以适当根据自己的需求做调整
restartpx.bat
@echo off
setlocal enabledelayedexpansion
set /a objIndex=0
set obj[0]=0
set obj[1]=0
set obj[2]=0for /f "skip=3 tokens=2 delims= " %%a in ('tasklist /fi "imagename eq px.exe"') do (echo echo ------!objIndex!------set obj[!objIndex!]=%%aset /a objIndex+=1
)if (%obj[0]%)==(0) (echo px progress isn't running.start C:\Users\RAY\DiskD\WorkSoftwares\px-v0.8.3-windows\px.exe
)else (echo px is running.echo kill px progress......;taskkill /pid %obj[0]% -t -ftimeout /t 1echo px has been killed.echo start px ......timeout /t 2start C:\Users\RAY\DiskD\WorkSoftwares\px-v0.8.3-windows\px.exe
)echo px has been restarted.timeout /t 3