start
должно быть уже в правильном направлении. Тем не менее, /b
прикрепляет его к той же консоли. Теперь проблема в том, что когда окно консоли закрыто, любой процесс, связанный с этой консолью, также будет закрыт.
Вы можете использовать start
без /b
, тогда он будет работать в новой консоли. Если вы хотите запустить его в фоновом режиме без окна консоли, тогда вам нужно будет использовать VBScript или сторонний инструмент: запускать пакетный файл полностью скрытым способом
Однако в этом случае вы больше не увидите вывод stdout / stderr. Вы можете перенаправить его в файл, обернув его в cmd /c your_command > stdout.txt 2> stderr.txt
вызов и запустив его одним из вышеупомянутых методов (VBScript, сторонний инструмент, ...).
Кроме того, вы также можете скрыть свое собственное окно консоли перед выходом. Я только что написал небольшую однострочную программу, которая делает именно это (исходный код в основном ShowWindow(GetConsoleWindow(), SW_HIDE)
): http://share.cherrytree.at/showfile-24286/hide_current_console.exe
Таким образом, вы можете использовать start /b
, и когда вы захотите «закрыть» консоль (технически скрыть ее), вы запустите программу, hide_current_console & exit
которая скроет консоль, а затем закроет процесс cmd.exe (не процесс python) - в одну строку, так как вы не можете печатать exit
после того, как консоль была уже скрыта.
&
) иdisown
я бы предложил использоватьnohup
.