当前位置: 首页 > 面试题库 >

在一个Windows命令提示符下依次运行多个程序?

魏浩广
2023-03-14
问题内容

我需要一个接一个地运行多个程序,它们每个都在控制台窗口中运行。我希望控制台窗口可见,但是会为每个程序创建一个新窗口。这很烦人,因为在Eclipse中工作时,每个窗口都在一个新的位置打开(另一个窗口从另一个位置关闭),并且会失去焦点。

这是我使用的初始代码:

def runCommand( self, cmd, instream=None, outstream=None, errstream=None ):
    proc = subprocess.Popen( cmd, stdin=instream, stdout=outstream, stderr=errstream )

    while True:
        retcode = proc.poll()
        if retcode == None:
            if mAbortBuild:
                proc.terminate()
                return False
            else:
                time.sleep(1)
        else:
            if retcode == 0:
                return True
            else:
                return False

调用subprocess.Popen时,我切换为使用“ cmd”打开命令提示符,然后调用proc.stdin.write(b’program.exe \ r
\ n’)。这似乎解决了一个命令窗口的问题,但现在我不知道第一个程序何时完成,而我可以启动第二个。我想在运行第二个程序之前停止并查询第一个程序的日志文件。

关于如何实现此目标的任何提示?是否有另一个选项可以在我尚未找到的一个窗口中运行程序?


问题答案:

由于使用的是Windows,因此您可以创建一个批处理文件,列出要运行的每个程序,这些程序都将在单个控制台窗口中执行。由于它是一个批处理脚本,因此您可以执行诸如在示例中放入条件语句之类的操作。

import os
import subprocess
import textwrap

# create a batch file with some commands in it
batch_filename = 'commands.bat'
with open(batch_filename, "wt") as batchfile:
    batchfile.write(textwrap.dedent("""
        python hello.py
        if errorlevel 1 (
            @echo non-zero exit code: %errorlevel% - terminating
            exit
        )
        time /t
        date /t
    """))

# execute the batch file as a separate process and echo its output
kwargs = dict(stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
              universal_newlines=True)
with subprocess.Popen(batch_filename, **kwargs).stdout as output:
    for line in output:
        print line,

try: os.remove(batch_filename)  # clean up
except os.error: pass


 类似资料:
  • 问题内容: 我创建了一个Java项目来调用Web服务。它具有一个Main java文件和另一个class文件。我已经将一些jar文件用于HTTP客户端。 在Eclipse中,它运行良好。我需要通过传递一些参数在命令提示符下运行Java程序。 在命令提示符下,我转到包含主Java和子类Java文件的src文件夹,并给出了以下命令 我收到以下错误 mainjava.java:14:找不到符号 symb

  • 这里的子类是我的另一个java类文件,用于调用web服务。 如何通过传递参数运行程序?

  • 因此,我试图运行依赖于外部jar文件的多个。java文件。我的程序结构如下所示… AccountReport.javadriver.java EquityAccount.java SavingsAccount.java YahooFinanceApi-3.6.0.jar 我必须做的是... 在您提交代码之前,请将您编写的所有。java文件复制到一个新目录中。如果您使用的是jar文件,请将其放在相同

  • 我最近开始学习Java编程语言的基础知识。为了在命令提示符下运行我的程序,我下载了java开发工具包(也称为JDK),并将我的Windows10系统路径设置为: C:\Program Files\java\jdk-9.0.1\bin;C:\Program Files\java\jre-9.0.1\bin 在用以下格式编写了一个简单的Hello World程序后: 并在命令提示符下使用 ,然后写 j

  • 问题内容: 我试图弄清楚如何在Windows 7上使用命令提示符运行Python程序。(我现在应该已经弄清楚了……) 当我在命令提示符下键入“ python”时,出现以下错误: 无法将“ python”识别为内部或外部命令,可操作程序或批处理文件。 我在寻求帮助时发现的第一个地方是该站点:http : //docs.python.org/faq/windows.html#how- do-i-run

  • 问题内容: 我想运行一些命令,直到按Ctrl-C才会退出。是否可以运行一次即可运行所有这些程序,而Ctrl-C会全部退出它们?他们可以共享终端输出。 具体来说,我有罗盘编译器,coffeescript编译器和一个自定义命令,用于监视文件更改,所有命令都在运行以监视文件更改。我不想为每个命令加载一个终端。 问题答案: 该bash脚本适用于N个并行线程。每个参数都是一个命令。 捕获SIGINT时将杀死