start
nên đã đúng hướng. Tuy nhiên, /b
gắn nó vào cùng một bàn điều khiển. Bây giờ vấn đề là khi một cửa sổ giao diện điều khiển bị đóng, bất kỳ quá trình liên quan đến giao diện điều khiển này cũng sẽ bị đóng.
Bạn có thể sử dụng start
mà không cần /b
, sau đó nó sẽ chạy trong một giao diện điều khiển mới. Nếu bạn muốn chạy nó trong nền mà không có cửa sổ giao diện điều khiển, thì bạn sẽ cần sử dụng công cụ VBScript hoặc bên thứ ba: Chạy một tệp bó theo cách hoàn toàn bị ẩn
Tuy nhiên, trong trường hợp đó, bạn sẽ không thấy đầu ra stdout / stderr nữa. Mặc dù vậy, bạn có thể chuyển hướng tệp đến một tệp bằng cách gói nó trong một cmd /c your_command > stdout.txt 2> stderr.txt
cuộc gọi và bắt đầu cuộc gọi này thông qua một trong các phương pháp đã nói ở trên (VBScript, công cụ của bên thứ ba, ...).
Ngoài ra, bạn cũng có thể ẩn cửa sổ giao diện điều khiển của riêng mình trước khi thoát. Tôi vừa viết một chương trình một dòng nhỏ thực hiện chính xác điều đó (về cơ bản là mã nguồn ShowWindow(GetConsoleWindow(), SW_HIDE)
): http://share.cherrytree.at/showfile-24286/ leather_cản_console.exe
Bằng cách này, bạn có thể sử dụng start /b
và khi bạn muốn "đóng" bàn điều khiển của mình (về mặt kỹ thuật ẩn nó), bạn sẽ chạy hide_current_console & exit
để ẩn bàn điều khiển và sau đó đóng quá trình cmd.exe (không phải quá trình python) - trong một dòng, vì bạn không thể gõ exit
sau khi bảng điều khiển đã bị ẩn.
hide_current_console
đến từ đâu? Không hoạt động trên PC W10.