なぜWindowsでこれを行うのは難しいのか分かりません。Python:Windowsで新しいコマンドプロンプトを起動し、終了/終了を待ちます
他のスクリプトを実行する一連のコマンドプロンプトウィンドウを生成したいとします。なぜなら、私はこれを望んでいるので、各スクリプトのすべての出力をきれいに見ることができます(メインウィンドウのスレッド/サブプロセスであれば、すべての出力を適切に表示できません)。また、出力ファイルをログに記録したくないのは、主にログファイルでは機能しないプログレスバーを表示するためです。
だから私の要件の個々の部分が一緒に動作しますが、ない:スタートは実際のコマンドであるため、
os.system("start cmd /c {command here}") # Launches in new command prompt, closes when done
しかし、OSのシステムは、(私はコマンドが終了するまで待つ秒をさせないであろうことが開きますだから、
p = subprocess.Popen(["start", "cmd", "/k", "{command here}], shell = True) # Needs to be shell since start isn't an executable, its a shell cmd
p.wait() # I can wait until finished (although it too finishes after start finishes)
私はこれを行うのですか:私がしようとした場合、新しいコマンドプロンプトが、それは
同様に)「完了」ですか?私は解決策がプロセスグループを使用することができると読んだが、それはUnixのみ....またはそのようなものだ
あるいは、すべてのサブプロセスからの出力を単一のウィンドウに表示するうえで、新しいコマンドプロンプトを開く必要がなく、単にスレッドを使用できます。それも動作しますが、もし私が何かをダウンロードしてプログレスバーを表示するだけでなく、他の情報を出力するような4つのスレッドがあるとすれば、それを表示する方法はわかりません。お互い)。
PS:これはWindows Vista上です。 PPS:私は、Windows、Linux、Macで動作するソリューションが好きなのは好きですが、今はWindowsに重点を置いていますが、3つすべてでうまくいくソリューションがほしいと思っています。私は、OSの適切なコマンドの代わりに "start cmd/c"を使用します。およそ
os.system("cmd /c {command here}")
あるいは
os.system("{command here}")
それがスタートですどのように
はあなたのコマンドとして「CMD」を使用して対「スタート」を使用している理由はありますか? – Joe
新しいコマンドプロンプトを開くのが見つかった唯一の方法です。別の方法がある場合は – robev