start
já deve estar na direção certa. No entanto, /b
anexa ao mesmo console. Agora, o problema é que, quando uma janela de console é fechada, qualquer processo associado a esse console também será fechado.
Você pode usar start
sem /b
e, em seguida, ele será executado em um novo console. Se você quiser executá-lo em segundo plano sem uma janela de console, então você precisaria usar uma ferramenta VBScript ou de terceiros: Executar um arquivo em lotes de forma completamente oculto
No entanto, nesse caso, você não veria mais a saída stdout / stderr. Você poderia redirecioná-lo para um arquivo, agrupando-o em uma chamada cmd /c your_command > stdout.txt 2> stderr.txt
e iniciando este através de um dos métodos acima mencionados (VBScript, ferramenta de terceiros, ...).
Como alternativa, você também pode ocultar sua própria janela do console antes de sair. Acabei de escrever um pequeno programa de uma linha que faz exatamente isso (o código-fonte é basicamente ShowWindow(GetConsoleWindow(), SW_HIDE)
): link
Dessa forma, você pode usar start /b
e, quando quiser "fechar" seu console (tecnicamente ocultá-lo), você executará hide_current_console & exit
, o que ocultaria o console e fecharia o processo cmd.exe (não o processo python) - em uma linha, já que você não pode digitar exit
depois que o console já estava oculto.