Windows: equivalente a la Terminal "&" de OS X

3

¿Hay alguna forma, en Windows 7, de emular el comportamiento del &personaje en la Terminal de OS X?
Estoy tratando de ejecutar varias instancias de Wget simultáneamente: puedo hacer esto sin ningún problema de clasificación en OS X, porque tengo un script de Python que construye una cadena larga, en la que cada instancia de Wget está separada. Cuando lo ejecuto con os.system()todo va bien.
Sin embargo, en Windows, esto no funciona, y las instancias se ejecutan en secuencia. Que no es lo que quiero.
Estoy abierto a todas las sugerencias: cmd.exehacks, puertos de shell, más Python, cualquier cosa, siempre que se creen nuevas ventanas de shell de Windows. ¡Gracias por adelantado!

Editar: descubrí que los archivos se descargan de hecho usando este método , pero en Windows, cmd.exesolo finaliza abruptamente la ejecución y permite al usuario aceptar nuevos comandos. ¿Hay alguna forma de evitar esto y mantener la consola "colgando" hasta que todas las instancias de Wget hayan terminado de descargarse?

Edición 2: publicar el código que estoy usando.

for track in album.tracks():
    tracknum = track["track_num"]
    tracktit = track["title"]
    URL = track["file"]["mp3-128"]
    filename = str(tracknum) + " - " + tracktit + ".mp3"

Ahora, bajo OS X, este código funciona maravillosamente.

    execstr += 'bandcamp-support' +os.sep+ 'wget --tries=0 -O"{}" "{}" -q & '.format(filename,URL)
    os.system('bandcamp-support' +os.sep+ 'wget' execstr[:-3])

En Windows, en cambio, esto no replica el comportamiento que experimento en OS X.

    os.system('start /B bandcamp-support' +os.sep+ 'wget --tries=0 -q -O"{}" "{}"'.format(filename,URL))
Jetlef
fuente
1
no funcionó? ¿Qué escribiste exactamente?
Keltari
Este es el comando que uso para cada instancia de Wget: os.system('start /B bandcamp-support' +os.sep+ 'wget --tries=0 -q -O"{}" "{}"'.format(filename,URL))@Keltari
Jetlef
No sé con certeza si hace esto (porque realmente no uso la línea de comandos de Windows), pero debería considerar usar powershell en lugar de cmd.exe, ya que tiene más características en general.
evilsoup
stackoverflow.com/questions/2554514/… indica que es fácil iniciar múltiples procesos con docs.python.org/2/library/subprocess.html#popen-objects y solo es difícil interactuar con más de uno al mismo tiempo. docs.python.org/2/library/os.html#os.spawnl y v (pero no otras variantes) también proporciona una forma 'más antigua' de ejecutar procesos NOWAIT en Unix y Windows
dave_thompson_085

Respuestas:

1

Si eres fanático de los shells * NIX, puedes instalar Cygwin y tener acceso a todos esos shells y herramientas con Cygwin . De lo contrario, puede instalar un shell Bash con Win-Bash . Sin embargo, creo que sería mejor con Cygwin, ya que tiene mucha funcionalidad.

Keltari
fuente
1
Cygwin es interesante, pero requiere muchas DLL ... ¿no hay un solo archivo binario? ¿O una forma de empaquetarlo en un binario yo mismo? Ahora sé por qué todos los programadores usan Linux / OS X ... y por qué todos odian a Windows. : D
Jetlef
1
Recomiendo Cygwin, en el peor de los casos, puede desinstalarlo. Es estable y puede obtener todas las herramientas * NIX que pueda desear. Wget no es parte del paquete base, puede buscarlo (obtenga el que está debajo de herramientas web, que es la aplicación completa, no la implementación basada en Perl).
Keltari
Ah, me rindo. Windows asustó a otro. Supongo que lo que quiero hacer se puede lograr de alguna manera usando estas técnicas: espere el final de los subprocesos con múltiples trabajos paralelos , pero necesitaría adaptar esos ejemplos a Windows, y estoy cansado de hacerlo.
Jetlef