Foi o que descobri ao executar arquivos em lote em paralelo (várias instâncias do mesmo arquivo bat ao mesmo tempo com diferentes parâmetros de entrada):
Vamos dizer que você tem um arquivo exe que executa uma tarefa longa chamada LongRunningTask.exe
Se você chamar o exe diretamente do arquivo bat, apenas a primeira chamada para o LongRunningTask será bem-sucedida, enquanto o restante receberá um erro do SO "O arquivo já está sendo usado pelo processo"
Se você usar este comando:
start / B / WAIT "" "LongRunningTask.exe" "" parâmetros "
Você poderá executar várias instâncias do bastão e exe, enquanto aguarda a conclusão da tarefa antes que o bastão continue executando os comandos restantes. A opção / B é para evitar a criação de outra janela; as aspas vazias são necessárias para que o comando funcione, consulte a referência abaixo.
Observe que, se você não usar o / WAIT no início, o LongRunningTask será executado ao mesmo tempo que os comandos restantes no arquivo em lotes, portanto, poderá criar problemas se um desses comandos exigir a saída do LongRunningTask
Retomar :
Isso não pode ser executado em paralelo:
- chame LongRunningTask.exe
Isso será executado em paralelo e ficará ok, desde que não haja dependências de dados entre a saída do comando e o restante do arquivo bat:
- start / B "" "LongRunningTask.exe" "parâmetros"
Isso será executado em paralelo e aguardará a conclusão da tarefa, para que você possa usar a saída:
- start / B / WAIT "" "LongRunningTask.exe" "" parâmetros "
Referência para o comando start: Como executar um programa a partir de um arquivo em lotes sem deixar o console aberto após o início do programa?