![在任务管理器中结束任务有效,但在 cmd 中结束任务无效。为什么?](https://linux22.com/image/1450844/%E5%9C%A8%E4%BB%BB%E5%8A%A1%E7%AE%A1%E7%90%86%E5%99%A8%E4%B8%AD%E7%BB%93%E6%9D%9F%E4%BB%BB%E5%8A%A1%E6%9C%89%E6%95%88%EF%BC%8C%E4%BD%86%E5%9C%A8%20cmd%20%E4%B8%AD%E7%BB%93%E6%9D%9F%E4%BB%BB%E5%8A%A1%E6%97%A0%E6%95%88%E3%80%82%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F.png)
每次完成电影文件转码后,我都需要终止软件。为了自动执行此操作,我编写了一个小批处理脚本。在其中,我尝试像这样使用 taskkill:
taskkill /im taskname.exe /t /f
但我总是收到以下错误消息:错误:无法终止 PID 为 6708 的进程。原因:该任务没有正在运行的实例。
我还尝试以管理员身份启动 cmd 窗口,也尝试了 PowerShell。但是当我随后执行 tasklist 时,它仍然显示该任务。
有趣的是,当我在任务管理器中右键单击该任务并结束任务时,该任务会立即终止。任务管理器中的“结束任务”调用哪个命令?我可以使用批处理文件中的命令来自动执行该操作吗?
答案1
根据建议巴洛普第三方命令行应用程序 nircmd.exe 完成了这项工作!
nircmd.exe killprocess processname
答案2
如果你无法通过名称杀死它,但是有进程 ID,你可以尝试通过 PID 杀死它:
for /f "delims== tokens=2" %%i in ('WMIC process where "Name='process.exe'" get ProcessId /value') do set pid=%%i
echo Going to kill PID: %pid%
taskkill.exe /PID %pid%