【发布时间】:2020-12-09 05:53:29
【问题描述】:
在 Python 中,如何检查和关闭如图所示的 cmd 窗口?此代码应控制并找到哪个 cmd 已完成并如图所示空闲,然后将其关闭。我不想要等待关闭它的代码。它应该是一个独立的程序。顺便说一句,图像是一个样本。这不是我原来的问题。
你可以认为你有一个窗口或几个窗口这样打开并等待,它们怎么能被关闭?有一个条件可以关闭命令提示符。这个条件是应该完成那个提示下的程序。不应关闭运行程序的命令提示符。而且,这个程序应该在外部和事后进行干预。
我无法用 taskkill 或 psutil 解决。他们总是将 cmd 的状态视为正在运行。更具体的可以看下面的代码sn-p,
os.system("start /B start cmd.exe @cmd /k python helloworld.py & exit")
它不会关闭命令提示符。
【问题讨论】:
-
将 python 文件拖放到命令提示符上,然后它将显示您的输出。然后输入
exit或exit()关闭cmd -
你为什么同时使用
start和cmd两次?cmd /C python helloworld.py(或start "" /B cmd /C python helloworld.py)应该足够了…… -
@aschipfl 我这样使用它,因为这样,它可以在提示符中从外部启动,并且程序不会等待提示符完成。否则,程序会等待提示完成并关闭它,这是我不想要的。
-
简单的解决方案根本不使用
os.system(),因为使用的代码导致执行%ComSpec% /c start /B start cmd.exe @cmd /k python helloworld.py & exit,这意味着运行cmd.exe以使用其内部命令start再运行一个命令进程以使用内部命令start再运行一个命令进程来运行python.exe来处理Python 脚本。此命令行末尾的& exit由os.system开始的第一个cmd.exe解释为在第一个start之后执行的命令。整个方法没有意义。 -
第二个 cmd 进程使用命令行
C:\Windows\System32\cmd.exe /K start cmd.exe @cmd /k python helloworld.py启动,由于选项/K而一直运行直到用户输入exit。第三个命令进程以命令行cmd.exe @cmd /k python helloworld.py启动,这导致以helloworld.py作为参数运行python.exe,并在python.exe由于选项/k而自行终止后继续运行。因此,用户必须输入exit才能关闭第三个cmd.exe,而第一个cmd.exe在第二个cmd.exe开始后已经自行关闭,因为...