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
коли консоль вже була прихована.
hide_current_console
береться? Не працює на ПК W10.