จะปิดหน้าต่าง cmd โดยอัตโนมัติหลังจากเรียกใช้ไฟล์แบตช์ได้อย่างไร


90

ฉันกำลังเรียกใช้ไฟล์แบตช์ที่มีสองบรรทัดนี้:

start C:\Users\Yiwei\Downloads\putty.exe -load "MathCS-labMachine1"
"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

ไฟล์แบตช์นี้ใช้เพื่อเรียกใช้แอปพลิเคชัน Xming จากนั้นแอป PuTTY ดังนั้นฉันจึงสามารถ SSH ในห้องปฏิบัติการคอมพิวเตอร์ของมหาวิทยาลัยได้

อย่างไรก็ตามหากฉันเรียกใช้สิ่งนี้และ Xming ยังไม่เปิดอยู่เมื่อฉันออกจากเทอร์มินัล PuTTY หน้าต่าง cmd จะยังคงเปิดอยู่ เฉพาะในกรณีที่ฉันเรียกใช้ Xming แล้วหน้าต่าง cmd จะปิดเมื่อฉันปิดเทอร์มินัล PuTTY ฉันได้ลองเพิ่มexitลงในบรรทัดสุดท้ายของไฟล์แบตช์แล้ว แต่ก็ไม่มีประโยชน์


1
เป็น"C:\Program Files (x86)\Xming\Xming.exe"พารามิเตอร์จาก putty.exe หรือคำสั่งแยก?
bpoiss

หากบรรทัดที่สองเป็นคำสั่งที่สองให้ลองเพิ่ม start ก่อนหน้านั้นด้วย
สีเทา

1
@BernhardPoiss มันเป็นคำสั่งแยกต่างหากไม่ใช่พารามิเตอร์สำหรับ putty.exe ถ้าฉันใส่เส้นนั้นก่อนมันจะแฮงค์และผงสำหรับอุดรูเปิด ถ้าฉันใส่ start ไว้ข้างหน้าหน้าต่างจะแจ้งว่า "ไม่พบ" C: \ Program "โปรดตรวจสอบว่าพิมพ์ถูกต้อง
yiwei

คำตอบ:


136

ปรับเปลี่ยนไฟล์แบตช์เป็นSTARTทั้งสองโปรแกรมแทนที่จะใช้ไฟล์หนึ่งไฟล์STARTและเข้าCALLอีกไฟล์หนึ่ง

start C:\Users\Yiwei\Downloads\putty.exe -load "MathCS-labMachine1"
start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

หากคุณเรียกใช้เช่นนี้จะไม่มีหน้าต่าง CMD เปิดอยู่หลังจากเริ่มโปรแกรม


29
+1 ยกเว้นเมื่อคุณใช้เครื่องหมายคำพูดคู่สำหรับเส้นทางที่คุณต้องเพิ่มพารามิเตอร์ตัวแรก""เมื่อจำเป็นต้องใช้หัวเรื่อง คำสั่งที่สองควรเป็นstart "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindowอย่างอื่นมันจะพยายามเปิดหน้าต่างคำสั่งที่มีชื่อว่าC:\Program Files (x86)\Xming\Xming.exeพยายามดำเนินการ:0กับพารามิเตอร์-clipboard -multiwindow
Patrick Meinecke

นอกจากนี้start /B "GCFScape" "x64\GCFScape.exe">nulตัวอย่างนี้ยังมีประโยชน์สำหรับฉัน
xacinay

4
"ถ้าคำสั่งเป็นคำสั่ง cmd ภายในหรือไฟล์แบตช์ตัวประมวลผลคำสั่งจะทำงานด้วยสวิตช์ / K เป็น cmd.exe ซึ่งหมายความว่าหน้าต่างจะยังคงอยู่หลังจากรันคำสั่งแล้ว" ss64.com/nt/start.html
CAD bloke

3
@CADbloke ปัญหาดังกล่าวของคุณสามารถแก้ไขได้โดยใช้cmd.exe /C "start cmd.exe /C [...].bat ..."
Thorsten Schöning

1
@ patrick-meinecke ขอบคุณที่เพิ่มความคิดเห็นเกี่ยวกับ "" ฉันรู้สึกหงุดหงิดที่ทำให้ฉันมีปัญหา ฉันอ่านความคิดเห็นของคุณและช่วงเวลาที่ตามมา
Michael Eakins

21

exitปกติคุณจบไฟล์ชุดด้วยเส้นที่เพิ่งกล่าวว่า หากคุณต้องการให้แน่ใจว่าไฟล์ทำงานและหน้าต่าง DOS ปิดลงหลังจากผ่านไป 2 วินาทีคุณสามารถเพิ่มบรรทัด:

timeout 2 >nul
exit

แต่exitคำสั่งจะไม่ทำงานหากไฟล์แบตช์ของคุณเปิดอีกหน้าต่างหนึ่งเพราะในขณะที่เปิดหน้าต่างที่สองหน้าต่าง DOS เก่าก็จะแสดง

วิธีแก้ปัญหา:ตัวอย่างเช่นมีโปรแกรมฟรีเล็ก ๆ ที่เรียกว่าBgInfoซึ่งจะแสดงข้อมูลทั้งหมดเกี่ยวกับคอมพิวเตอร์ของคุณ สมมติว่าอยู่ในไดเร็กทอรีที่เรียกC:\BgInfoเพื่อเรียกใช้จากไฟล์แบตช์ด้วย/popupสวิตช์และปิดหน้าต่าง DOS ในขณะที่ยังทำงานอยู่ให้ใช้:

start "" "C:\BgInfo\BgInfo.exe" /popup
exit

มี/popupข้อผิดพลาดให้ฉันจริงๆ หลังจากลบออกทั้งหมดแล้ว
Dmitry Efimenko

5

หากคุณต้องการแยกคำสั่งออกเป็นหนึ่งคำสั่งต่อไฟล์คุณสามารถทำได้

cmd /c start C:\Users\Yiwei\Downloads\putty.exe -load "MathCS-labMachine1"

และในไฟล์อื่นคุณสามารถทำได้

cmd /c start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

คำสั่ง cmd / c จะปิดหน้าต่างพรอมต์คำสั่งหลังจากรัน exe


3

สิ่งนี้ได้ผลสำหรับฉัน ฉันแค่ต้องการปิดหน้าต่างคำสั่งโดยอัตโนมัติหลังจากออกจากเกม ฉันแค่ดับเบิลคลิกที่ไฟล์. bat บนเดสก์ท็อปของฉัน ไม่มีทางลัด

taskkill /f /IM explorer.exe
C:\"GOG Games"\Starcraft\Starcraft.exe
start explorer.exe
exit /B

1

ฉันมีสิ่งนี้ฉันเพิ่มEXITและในตอนแรกมันไม่ได้ผลฉันเดาว่าต้องการcalled program exitingคำแนะนำที่กล่าวถึงในคำตอบอื่นที่นี่อย่างไรก็ตามตอนนี้ใช้งานได้โดยไม่ต้องกังวลใจอีกต่อไป - ไม่แน่ใจว่าเกิดจากอะไร แต่ประเด็นที่ควรทราบก็คือฉัน เรียกแฟ้มข้อมูล.htmlมากกว่าโปรแกรมที่จับมันbrowser.exeฉันไม่ได้แก้ไขอะไรอื่น แต่พอไปบอกว่ามันเป็น neater มากเพียงแค่ใช้ไฟล์ค้างคาวที่จะเข้าถึงหน้าการเข้าถึงหลักของเอกสารเว็บเหล่านั้นและมีเพียงtitle.bat, contents.bat, index.batในโฟลเดอร์ราก กับเนื้อหาที่เหลือในโฟลเดอร์ย่อย

เช่น: contents.bat อ่าน

cd subfolder
"contents.html"
exit

นอกจากนี้ยังดูดีกว่าถ้าฉันเปลี่ยนไอคอนไฟล์ bat สำหรับรายการเหล่านั้นเพื่อให้เหมาะกับบริบทที่พวกเขาอยู่ด้วยเช่นกัน แต่นั่นก็เป็นอีกเรื่องหนึ่งคือการซ่อนไฟล์ bat ในโฟลเดอร์ย่อยและสร้างทางลัดไอคอนที่กำหนดเองลงในโฟลเดอร์รูทด้วยรูปภาพ เรียกร้องให้มีการปรับแต่งซ่อนอยู่ด้วย


1

คุณสามารถลองสิ่งที่ค่อนข้างอันตราย: taskkill /IM cmd.exe.. bcz อันตรายที่จะฆ่า cmd ที่เปิดอยู่และ cmd ใด ๆ ที่เปิดอยู่ก่อน

หรือเพิ่มการตรวจสอบเพื่อยืนยันว่าคุณมี cmd.exe ที่ถูกต้องแล้วฆ่าผ่าน PID เช่นนี้:

set loc=%time%%random%
title=%loc%
for /f "tokens=2 delims= " %%A in ('tasklist /v ^| findstr /i "%loc%"') do (taskkill /PID %%A) 

แทน(pslist &&A)หรือ(tasklist /FI "PID eq %%A")สำหรับ(taskkill /PID %%A)ถ้าคุณต้องการที่จะตรวจสอบครั้งแรก (และอาจจะได้ pstools ติดตั้ง)


0

เพียงลองทำ/sตามรายการด้านล่าง

เป็นบรรทัดสุดท้ายในประเภทไฟล์แบตช์:

exit /s

คำสั่งดังกล่าวจะปิดหน้าต่าง Windows CMD

/s - ย่อมาจาก silent as in (จะรอการป้อนข้อมูลจากแป้นพิมพ์)


1
cmd's ทางออกคำสั่งไม่ได้มี/sสวิทช์ (และมันจะไม่มีจุดหมายอยู่แล้ว)
สเตฟาน

-1

เพิ่มรหัสนี้ที่ส่วนท้ายของรหัสการดำเนินการ

c: \ windows> ออก


1
คุณอ่านประโยคสุดท้ายของคำถามหรือไม่:I've tried adding exit to the last line of the batch file, but to no avail.
Stephan

ฉันได้เพิ่มทางออกในตอนท้ายของสคริปต์ของฉันและมันได้แก้ปัญหาของฉันได้จริง
Attila
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.