Necesito ejecutar múltiples programas uno después de otro y cada uno se ejecuta en una ventana de consola. Quiero que la ventana de la consola sea visible, pero se crea una nueva ventana para cada programa. Esto es molesto porque cada ventana se abre en una nueva posición desde donde la otra se cierra y se roba el foco cuando se trabaja en Eclipse.¿Ejecuta varios programas secuencialmente en un símbolo del sistema de Windows?
Este es el código inicial que estaba usando:
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
me cambié a la apertura de una línea de comandos usando 'cmd' al llamar subprocess.Popen y luego llamar proc.stdin.write (b'program.exe \ r \ n '). Esto parece resolver el problema de una ventana de comando, pero ahora no puedo decir cuándo termina el primer programa y puedo comenzar el segundo. Quiero detener e interrogar el archivo de registro desde el primer programa antes de ejecutar el segundo programa.
¿Algún consejo sobre cómo puedo lograr esto? ¿Hay alguna otra opción para ejecutar los programas en una ventana que aún no he encontrado?
que casi con trabajar. Básicamente, hice lo mismo escribiendo en el símbolo del sistema que me abrí. Pero el problema es que no puedo parar después de que el primer comando haya terminado, inspeccionar un archivo de registro y luego pasar al siguiente comando. – Sean
@Sean: parece que podría intercalar invocaciones de sus comandos con una que le permitió inspeccionar el archivo de registro y determinar un código de salida que el archivo por lotes puede inspeccionar y usar para determinar si 'salir' o continuar. Los programas por lotes admiten el procesamiento condicional 'if [not] errorlevel ...'. Si está interesado, podría actualizar mi respuesta para mostrar cómo se podría hacer eso. – martineau
Gracias Martineau. Hice una búsqueda rápida en errorlevels y archivos por lotes y lo encontré. ¡Gracias por la ayuda! – Sean