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 (ไม่ใช่กระบวนการหลาม) - ในหนึ่งบรรทัด เนื่องจากคุณไม่สามารถพิมพ์exit
หลังจากคอนโซลถูกซ่อนอยู่แล้ว
&
) และฉันจะแนะนำให้ใช้disown
nohup