我有一个批处理文件运行一个基于python的应用程序不断读取消息。我有python脚本,它在超时时间后关闭应用程序并执行剩余代码。如何在批处理文件在python中执行后关闭命令提示符窗口?
我使用Subprocess.Popen批处理文件运行和终止()调用终止,但Cmd窗口仍在OPen。它不关闭?
而代码没有执行直到窗口关闭。我该如何强行关闭cmd?
我有一个批处理文件运行一个基于python的应用程序不断读取消息。我有python脚本,它在超时时间后关闭应用程序并执行剩余代码。如何在批处理文件在python中执行后关闭命令提示符窗口?
我使用Subprocess.Popen批处理文件运行和终止()调用终止,但Cmd窗口仍在OPen。它不关闭?
而代码没有执行直到窗口关闭。我该如何强行关闭cmd?
您可以使用psutil
并专门Process.terminate()功能。
可以说你的命令提示符窗口的名称是“的MyScript”
for proc in psutil.process_iter():
if proc.name() == "myscript":
proc.terminate()
或者你可以你为什么要使用批处理文件,而不是运行的Python运行另一个命令,例如taskkill
taskkill /F /T /IM myscript
我正在使用此代码来处理进程:'def kill(proc_pid): process = psutil.Process(proc_pid) for process in process.get_children(recursive = True): proc.kill() process.kill ()' –
和?它应该工作,如果你能得到正确的PID。请注意,如果将shell参数设置为True,则这是生成的shell的进程ID。你应该对这是如何工作做一点研究。或者你可以使用psutil来产生进程,并杀死它。 –
脚本直接? – eryksun
这不是一个“cmd”窗口。它是由conhost.exe托管的控制台窗口。在所有附加的流程退出之前它不会关闭。你正在杀死cmd.exe,但子python.exe进程也被连接到控制台。你甚至需要控制台窗口吗?尝试运行设置为“CREATE_NO_WINDOW”或“DETACHED_PROCESS”的子进程[使用'creationflag'](http://stackoverflow.com/a/7006424)。 – eryksun