因为taskkill是一次性kill掉所有进程,并不是循环一次kill一个的,所以会出现多执行N-1次的情况。
可以这样解决:
1.不用FOR,将第8行改成:- TASKLIST /fi "imagename eq %NAME%"|find /i "%NAME%"&&taskkill /f /im %NAME%
复制代码 2.一定要用For的话,将第8行的内容改成这样:- FOR /F %%L in ('TASKLIST /fi "imagename eq %NAME%"^|find /i "%NAME%"') do Set Flag=1
- if defined Flag taskkill /f /im %NAME%
复制代码 PS:不建议tasklist|findstr "abc.exe"这样的写法,如果某个进程名恰好包含abc.exe(如123abc.exe),找到的就不止abc.exe了。 |