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
после того, как консоль уже скрыта.