start
já deve estar na direção certa. No entanto, /b
anexa-o ao mesmo console. Agora, o problema é que, quando uma janela do console é fechada, qualquer processo associado a esse console também será fechado.
Você pode usar start
sem e /b
, em seguida, ele será executado em um novo console. Se você quiser executá-lo em segundo plano sem uma janela do console, precisará usar uma ferramenta VBScript ou de terceiros: Execute um arquivo em lotes de uma maneira completamente oculta
No entanto, nesse caso, você não verá mais a saída stdout / stderr. No entanto, você pode redirecioná-lo para um arquivo, envolvendo-o em uma cmd /c your_command > stdout.txt 2> stderr.txt
chamada e iniciando-o por um dos métodos mencionados acima (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)
): http://share.cherrytree.at/showfile-24286/hide_current_console.exe
Dessa forma, você pode usar start /b
e, quando quiser "fechar" seu console (tecnicamente o ocultar), você executará o hide_current_console & exit
que ocultará o console e, em seguida, feche o processo cmd.exe (não o processo python) - em uma linha, pois você não pode digitar exit
após o console já estar oculto.
hide_current_console
vem? Não funciona em um PC W10.