Questo è quello che ho trovato durante l'esecuzione di file batch in parallelo (più istanze dello stesso file bat contemporaneamente con parametri di input diversi):
Diciamo che hai un file exe che esegue un'attività lunga chiamata LongRunningTask.exe
Se chiami exe direttamente dal file bat, solo la prima chiamata a LongRunningTask avrà successo, mentre il resto riceverà un errore del sistema operativo "Il file è già in uso dal processo"
Se si utilizza questo comando:
start / B / WAIT "" "LongRunningTask.exe" "parametri"
Sarai in grado di eseguire più istanze di bat ed exe, mentre attendi ancora che l'attività finisca prima che la bat continui ad eseguire i comandi rimanenti. L'opzione / B è per evitare di creare un'altra finestra, le virgolette vuote sono necessarie per il funzionamento del comando, vedere il riferimento di seguito.
Si noti che se non si utilizza / WAIT all'inizio, LongRunningTask verrà eseguito contemporaneamente ai restanti comandi nel file batch, quindi potrebbe creare problemi se uno di questi comandi richiede l'output di LongRunningTask
Ripresa:
Questo non può funzionare in parallelo:
- chiamare LongRunningTask.exe
Questo funzionerà in parallelo e andrà bene fino a quando non ci saranno dipendenze di dati tra l'output del comando e il resto del file bat:
- start / B "" "LongRunningTask.exe" "parametri"
Questo verrà eseguito in parallelo e attenderà il completamento dell'attività, quindi è possibile utilizzare l'output:
- start / B / WAIT "" "LongRunningTask.exe" "parametri"
Riferimento per il comando di avvio: come posso eseguire un programma da un file batch senza lasciare la console aperta dopo l'avvio del programma?