タイトルはほとんどそれを示していますが、一般的にアプリケーションを閉じるだけで、cmd に固有である必要はありません。私は見た
os.system(taskkill blah blah)
これは実際にウィンドウを閉じるのではなく、ウィンドウ内のコマンドを終了するだけです。実際にウィンドウ自体を閉じたいと思います。
編集:コマンドウィンドウを閉じる特定のコード行を教えてください。マウスオーバー時のコマンドウィンドウの名前は
C:\Windows\system32\cmd.exe
タイトルはほとんどそれを示していますが、一般的にアプリケーションを閉じるだけで、cmd に固有である必要はありません。私は見た
os.system(taskkill blah blah)
これは実際にウィンドウを閉じるのではなく、ウィンドウ内のコマンドを終了するだけです。実際にウィンドウ自体を閉じたいと思います。
編集:コマンドウィンドウを閉じる特定のコード行を教えてください。マウスオーバー時のコマンドウィンドウの名前は
C:\Windows\system32\cmd.exe
このようなもの?
import sys
sys.exit()
または簡単に...
raise SystemExit
それがあなたの探しているものではない場合は、教えてください
また、ファイルを .pyw で保存することもできますが、それでは cmd はまったく開かれません
これは、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