标题几乎说明了这一点,尽管它不需要特定于 cmd,只是一般地关闭应用程序。我见过
os.system(taskkill blah blah)
这实际上并没有关闭窗口,而只是在窗口内结束 cmd,我想实际关闭窗口本身。
编辑:有人可以给我一个特定的代码行来关闭一个 cmd 窗口。鼠标悬停时 cmd 窗口的名称是
C:\Windows\system32\cmd.exe
标题几乎说明了这一点,尽管它不需要特定于 cmd,只是一般地关闭应用程序。我见过
os.system(taskkill blah blah)
这实际上并没有关闭窗口,而只是在窗口内结束 cmd,我想实际关闭窗口本身。
编辑:有人可以给我一个特定的代码行来关闭一个 cmd 窗口。鼠标悬停时 cmd 窗口的名称是
C:\Windows\system32\cmd.exe
像这样的东西?
import sys
sys.exit()
或更简单...
raise SystemExit
如果那不是你要找的告诉我
您也可以使用 .pyw 保存文件,并且根本不会打开 cmd
对于任何因贵组织中的繁文缛节而无法下载 pywin32 的人使用 Python 2.7。如果您使用的是 Windows XP 及更高版本,则可以使用 taskkill 按窗口标题名称终止进程,如下所示,对于在提升模式下以标题MyTitle启动的 dos 命令提示符
os.system('taskkill /fi "WindowTitle eq Administrator: MyTitle"')
我用它来终止并关闭 cmd 窗口,希望对 os.system("taskkill /f /im cmd.exe") 有所帮助
这是一种使用Python for Windows 扩展 (pywin32)来查找 PID 和taskill以结束进程的方法(基于此示例)。我这样做是为了让您访问一些额外的运行信息,以防您不想不加选择地杀死任何 cmd.exe:
import os
from win32com.client import GetObject
WMI = GetObject('winmgmts:')
processes = WMI.InstancesOf('Win32_Process')
for p in WMI.ExecQuery('select * from Win32_Process where Name="cmd.exe"'):
print "Killing PID:", p.Properties_('ProcessId').Value
os.system("taskkill /pid "+str(p.Properties_('ProcessId').Value))
现在在 for 循环中,您可以查看有关每个正在运行的进程的其他一些信息(或者甚至查找依赖于它的子进程(例如在每个 cmd.exe 中运行程序)。如何读取每个进程属性的示例可能如下所示这个:
from win32com.client import GetObject
WMI = GetObject('winmgmts:')
processes = WMI.InstancesOf('Win32_Process')
for p in WMI.ExecQuery('select * from Win32_Process where Name="cmd.exe"'):
print "--running cmd.exe---"
for prop in [prop.Name for prop in p.Properties_]:
print prop,"=",p.Properties_(prop).Value
exit() 命令有效,但是在 2.7 中它仍然会询问您是否确定要退出。它表明该程序仍在运行。ETC