如何在CMD通过Python的在同一个终端,没有窗关闭

问题描述:

我探索使用Python来执行CMD任务执行多个任务,使用os.system()如何在CMD通过Python的在同一个终端,没有窗关闭

然而,我发现,防止你的几个问题从通过python执行多个命令,以及任务完成后窗口关闭的问题。

import os 

os.system('ipconfig', 'netstat') 

,从这个出现的错误是system() takes at most 1 argument (2 given)

import os 

os.system('ipconfig') 
os.system('netstat') 

,从这个想法出现的问题是,一旦IPCONFIG已经完成了,我从窗口喷出和netstat开始在新的终端。在netstat完成之后,在我读取接收到的数据之前,我也从这个终端中弹出。

我该如何运行两个接一个接一个地命令,但在同一个窗口中的命令? (我可以向上滚动并查看上一条命令,它是数据。)我怎样才能防止CMD将我从窗口中弹出?

+0

CMD默认附加到控制台,无论是新分配还是继承。隐式地,通过'cmd.exe/c'运行单个命令行,之后CMD退出,控制台主机进程(conhost.exe)也一样,因为没有进程附加到它。原则上,尽管我不推荐这样做,但可以为CMD分配自己的控制台来继承。例如:'import os,ctypes;''ctypes.WinDLL('kernel32')。AllocConsole();''os.system('ipconfig');''os.system('netstat')'。 – eryksun

+0

但是,最好运行单个命令并管理其输出以用于Python,在这种情况下,甚至可以运行控制台应用程序(例如ipconfig.exe),而不会分散控制台窗口。例如:'import subprocess;''DETACHED_PROCESS = 8;''result = subprocess.run('ipconfig.exe',encoding ='mbcs',creationflags = DETACHED_PROCESS,stdin = subprocess.DEVNULL,stdout = subprocess.PIPE,stderr = subprocess.PIPE);''print('返回代码:',result.returncode);'print(result.stdout)'。 – eryksun

使用os.system('command & pause')

“&”允许您将执行一前一后在同一窗口中的字符串多个命令。

'暂停'要求用户输入退出终端。