6
votes

Exécuter un programme .bat en arrière-plan sur Windows

J'essaie d'exécuter un fichier .bat (qui agit comme un simulateur) dans une nouvelle fenêtre, il doit toujours toujours fonctionner en arrière-plan. Je pense que la création d'un nouveau processus est la seule option que j'ai. Fondamentalement, je veux que mon code fasse quelque chose comme ceci: xxx

Je suis sur Windows, donc je ne peux pas faire os.fork . < / p>


3 commentaires

Voir Stackoverflow.com/Questtions/23397/...


Dupliqué possible de Python Subprocess


Déjà lisez celui sur la fabrication d'un OS.Fork sous Windows, j'ai besoin de quelque chose que je n'aurai pas à installer un module ou un programme (Cygwin) pour le faire.


4 Réponses :


2
votes

On dirait que vous voulez "OS.SPOWN *", qui semble assimiler à OS.FORK, mais pour Windows. Certaines recherches ont été activées cet exemple:

# File: os-spawn-example-3.py

import os
import string

if os.name in ("nt", "dos"):
    exefile = ".exe"
else:
    exefile = ""

def spawn(program, *args):
    try:
        # check if the os module provides a shortcut
        return os.spawnvp(program, (program,) + args)
    except AttributeError:
        pass
    try:
        spawnv = os.spawnv
    except AttributeError:
        # assume it's unix
        pid = os.fork()
        if not pid:
            os.execvp(program, (program,) + args)
        return os.wait()[0]
    else:
        # got spawnv but no spawnp: go look for an executable
        for path in string.split(os.environ["PATH"], os.pathsep):
            file = os.path.join(path, program) + exefile
            try:
                return spawnv(os.P_WAIT, file, (file,) + args)
            except os.error:
                pass
        raise IOError, "cannot find executable"

#
# try it out!

spawn("python", "hello.py")

print "goodbye"


1 commentaires

est ce python 2.7 seulement?



3
votes

Utiliser sous-processus.popen code> (non testé sous Windows, mais devrait fonctionner).

import os

def startSim():
    os.startfile("startsim.bat")
    # Do your stuff here.


0 commentaires

1
votes

sur Windows, un processus d'arrière-plan est appelé "service". Vérifiez cette autre question sur la façon de créer un service Windows avec Python: Création d'un service Python Win32


0 commentaires

1
votes
proc.wait()

0 commentaires