เปิด CMD ค้างไว้หลังจากไฟล์ BAT ทำงาน


169

ฉันมีไฟล์ค้างคาวเช่นนี้:

ipconfig

นั่นจะพิมพ์ข้อมูล IP ไปที่หน้าจอ แต่ก่อนที่ผู้ใช้จะสามารถอ่านข้อมูลนั้น CMD จะปิดตัวเอง

ฉันเชื่อว่า CMD ถือว่าสคริปต์เสร็จสิ้นดังนั้นจึงปิดตัวลง

ฉันจะเปิด CMD ต่อไปได้อย่างไรหลังจากสคริปต์เสร็จสิ้นแล้ว



4
@ RobKielty เป็นคำถามเดียวกันก็ได้ - แต่ที่นี่เรามีคำตอบใหม่ (ซึ่งดีกว่า IMHO)
alfasin


@alfasin นั่นไม่ใช่คำตอบของ Rutger Nijlunsing ใช่ไหม?
Rob Kielty

@ Robobielty ไม่คำตอบของฉันไม่เหมือนกับที่ไม่ได้ใช้pauseซึ่งเป็นวิธีการแก้ปัญหาที่ดี (และนั่นเป็นเหตุผลที่ฉัน upvoted คำตอบนี้) แต่ไม่ใช่คำตอบที่แก้ปัญหาได้จริงๆเพราะหลังจากผู้ใช้เปิดหน้าต่างEnterหรือSpaceหน้าต่างจะปิด ..
alfasin

คำตอบ:


163

ขึ้นอยู่กับว่าคุณกำลังเรียกใช้คำสั่งคุณสามารถใส่/kหลังcmdเพื่อให้เปิดหน้าต่าง

cmd /k my_script.bat

เพียงเพิ่มcmd /kไปยังจุดสิ้นสุดไฟล์แบตช์ของคุณก็จะทำงานได้เช่นกัน ขอมอบเครดิตให้กับLuigi D'Amicoผู้โพสต์เกี่ยวกับเรื่องนี้ในความคิดเห็นด้านล่าง


14
หลังจากสคริปต์ทั้งหมดของคุณในไฟล์ค้างคาวของคุณ - ใส่ -> cmd / k
Luigi D'Amico

3
ระวังว่าหากโปรแกรมของคุณมีข้อผิดพลาดด้านการสร้างประโยคหน้าต่างจะยังคงปิดอยู่หากคุณเรียกใช้ผ่านดับเบิลคลิกและวางไว้cmd /kที่ส่วนท้าย
Tobias Feil

สิ่งนี้ไม่ได้อธิบายการปิดหน้าต่าง cmd หากผู้ใช้ดับเบิลคลิกไฟล์
K - ความเป็นพิษใน SO กำลังเพิ่มขึ้น

237

วางpauseที่ท้ายไฟล์. BAT ของคุณ


7
นี่คือสิ่งที่ฉันกำลังมองหาเพราะฉันกำลังเรียกใช้ไฟล์ค้างคาวเมื่อเริ่มต้นไม่ผ่านคำสั่ง CMD +1
Hawkeye

3
หากคุณยังต้องการที่จะโต้ตอบกับไฟล์ค้างคาวหลังจากการดำเนินการของคุณแทน PAUSE เพียงแค่ cmd / k - หลังจากที่สคริปต์ของคุณทำงานแล้วคุณยังสามารถเรียกใช้คำสั่งด้วยตนเองหลังจากนั้นในบริบทเดียวกัน
Luigi D'Amico

ฉันไม่สามารถยืนได้เห็นว่าเรื่องนี้ไม่ได้เป็น "การแก้ปัญหา" ความคิดเห็นสำหรับคำถามนี้
นิวเฮ้าส์

57

เพียงเพิ่ม@pauseที่ส่วนท้าย

ตัวอย่าง:

@echo off
ipconfig
@pause

หรือคุณสามารถใช้:

cmd /k ipconfig

5
สัญลักษณ์ @ ทำหน้าที่อะไร มีความแตกต่างระหว่าง @pause และหยุดชั่วคราวหรือไม่
demonicdaron

3
@demonicdaron คำตอบอธิบายสัญลักษณ์ @: stackoverflow.com/a/21077142/2258
Richard Morgan

แต่ในกรณีนี้มันไม่ควรสร้างความแตกต่าง
Florian Leitgeb

ความแตกต่างระหว่าง@pauseและpauseสามารถมองเห็นได้ด้วยสายตาในคำตอบนี้: stackoverflow.com/questions/17957076#60053224
ZygD

7

การเพิ่มpause(Windows 7) ไปยังจุดสิ้นสุดไม่ได้ผลสำหรับฉัน
แต่การเพิ่มcmd /kด้านหน้าของคำสั่งของฉันใช้งานได้

ตัวอย่าง:

cmd /k gradlew cleanEclipse

7

เมื่อไฟล์. bat ไม่เริ่มจากภายในบรรทัดคำสั่ง (เช่นดับเบิลคลิก)

echo The echoed text
@pause

at_pause

echo The echoed text
pause

หยุด

echo The echoed text
cmd /k

cmd k

echo The echoed text & pause

and_pause


3

start cmd /kทำเวทมนตร์ให้ฉัน จริง ๆ แล้วฉันใช้มันเพื่อเตรียมแอพคอร์โดวา phonegap ที่มันรันคำสั่งแสดงผลลัพธ์และรอให้ผู้ใช้ปิดมัน ด้านล่างเป็นตัวอย่างง่ายๆ

start cmd /k echo Hello, World!

สิ่งที่ฉันใช้ในกรณีของฉัน

start cmd /k cordova prepare

ปรับปรุง

คุณสามารถมีชื่อเรื่องนี้โดยใช้

start "My Title" echo Hello, World!


1

หากคุณกำลังเริ่มต้นสคริปต์ภายในบรรทัดคำสั่งจากนั้นเพิ่มexit /bเพื่อให้เปิด CMD


ไม่จริงแก้คำถามการปรับเปลี่ยนipconfigและไฟล์ในตัวชุดอื่น ๆ ที่เป็นความคิดที่ดีมาก
robinCTS


1

ฉันยังสับสนว่าทำไมเราถึงเพิ่มcmdจุดเริ่มต้นและฉันสงสัยว่าถ้าฉันต้องเปิดพรอมต์คำสั่งก่อน cmd /kสิ่งที่คุณต้องทำคือการพิมพ์คำสั่งเต็มพร้อมกับ ตัวอย่างเช่นสมมติว่าแบตช์ไฟล์ของคุณคือ "my_command.bat" ซึ่งรันคำสั่งjavac my_code.javaดังนั้นรหัสในแบทช์ไฟล์ของคุณควรเป็น:

cmd /k javac my_code.java

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


0
javac -d C:\xxx\lib\ -classpath C:\xxx\lib\ *.java

cmd cd C:\xxx\yourbat.bat

คำสั่งที่สองทำให้หน้าต่าง cmd ของคุณไม่ถูกปิด สิ่งสำคัญคือคุณยังสามารถป้อนคำสั่งใหม่ได้


0

ในฐานะ sidenote สิ่งนี้ยังทำงานเมื่อเรียกใช้คำสั่งโดยตรงจากแถบค้นหาใน windows

เช่นทำงานโดยตรงipconfigจะปิดหน้าต่าง cmd โดยตรงหลังจากคำสั่งออก

ป้อนคำอธิบายรูปภาพที่นี่

การใช้cmd \k <command>ไม่ได้ - ซึ่งเป็นสิ่งที่ฉันพยายามทำเมื่อพบคำตอบนี้

ป้อนคำอธิบายรูปภาพที่นี่

มันมีข้อได้เปรียบที่เพิ่มขึ้นของการจดจำคำสั่งที่คุณพยายามเรียกใช้เสมอ เช่นการเรียกใช้echo hello worldจาก searchbar จะไม่ทำงานเพราะนั่นไม่ใช่คำสั่ง แต่ใช้cmd \k echo hello worldงานได้ดี

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