ฉันสามารถวางคำสั่งอะไรไว้ท้ายไฟล์แบตช์เพื่อป้องกันการปิดคอนโซลอัตโนมัติหลังจากเรียกใช้งานไฟล์ได้หรือไม่
ฉันสามารถวางคำสั่งอะไรไว้ท้ายไฟล์แบตช์เพื่อป้องกันการปิดคอนโซลอัตโนมัติหลังจากเรียกใช้งานไฟล์ได้หรือไม่
คำตอบ:
ในไฟล์แบตช์ Windows / DOS:
pause
นี่พิมพ์"Press any key to continue . . . "ข้อความที่ดี
หรือถ้าคุณไม่ต้องการ"Press any key to continue . . ."ข้อความให้ทำสิ่งนี้แทน:
pause >nul
ขึ้นอยู่กับคำถามที่แน่นอน!
โดยปกติpauseจะทำงานภายในไฟล์. bat
หากคุณต้องการให้cmd.exeไม่สามารถปิดการพิมพ์ให้ใช้cmd /kคำสั่งที่ท้ายไฟล์
cmd /kคำสั่งของคุณแทน & cmd /kจะไม่ทำงาน
หากคุณต้องการให้ cmd.exe ไม่ปิดและสามารถพิมพ์ต่อไปได้ให้ใช้
cmd /k
เพิ่งรู้สึกว่าจำเป็นต้องชี้แจงสิ่งที่/kไม่ (จากเว็บไซต์ windows):
/k: ดำเนินการคำสั่งที่ระบุโดยสตริงและดำเนินการต่อ
ดังนั้นcmd /kหากไม่มีคำสั่งติดตามที่ท้ายไฟล์ bat จะcmd.exeเปิดหน้าต่างค้างไว้เพื่อใช้ต่อไป
ในอีกทางหนึ่งpauseในตอนท้ายของไฟล์แบทช์ก็จะหยุดกระบวนการและหยุดcmd.exeในการกดปุ่มแรก
วิธีด้านล่างของการมีคำสั่งในไฟล์แบตช์จะเปิดหน้าต่างพร้อมรับคำสั่งใหม่และหน้าต่างใหม่จะไม่ออกโดยอัตโนมัติ
start "title" call abcd.exe param1 param2
start "title" call xyz.exe param1 param2
หากคุณใช้Mavenและคุณต้องการข้ามการพิมพ์และป้องกันไม่ให้คอนโซลเข้ามาใกล้เพื่อดูผลลัพธ์ที่คุณต้องใช้CALLคำสั่งในสคริปต์นอกเหนือจาก 'mvn clean install'
เช่นนี้จะปิดคอนโซล
ECHO This is the wrong exemple
mvn clean install
pause
เช่นนี้คอนโซลจะยังคงเปิดอยู่
ECHO This is the right exemple
CALL mvn clean install
pause
หากคุณไม่ใช้CALLคำสั่งตัวอย่างที่ผ่านมาจะไม่ทำงาน
call <myCommand>แก้ไขปัญหานี้ทำให้การแจ้งเตือนของฉันหยุดลงหลังจากการดำเนินการครั้งแรก
เพิ่มcmd.exeเป็นบรรทัดใหม่ด้านล่างรหัสที่คุณต้องการดำเนินการ:
c:\Python27\python D:\code\simple_http_server.py
cmd.exe
python script.py %1 && cmd
วิธีของฉันคือการเขียนแบทช์จริง (พูดว่า "foo.bat") เพื่อให้งานเสร็จ; จากนั้นสร้าง "start.bat" อื่น:
@echo off
cmd /k foo.bat
ฉันพบว่าสิ่งนี้มีประโยชน์อย่างยิ่งเมื่อฉันตั้งค่าตัวแปรสภาพแวดล้อมแบบครั้งเดียว
cmd /k(ไม่มีคำสั่งใด ๆ ) ที่ส่วนท้ายของfoo.batไฟล์และเรียกใช้ คุณไม่ต้องการstart.batไฟล์แยกต่างหาก
โทรcmdที่ท้ายไฟล์แบตช์
นอกจาก pauseนี้
set /p=
สามารถใช้งานได้มันจะคาดว่าอินพุตของผู้ใช้และจะปล่อยโฟลว์เมื่อกดถูกป้อน
หรือ
runas /user:# "" >nul 2>&1
ซึ่งจะทำเช่นเดียวกันยกเว้นสิ่งใดจากอินพุตของผู้ใช้จะถูกแสดงและจะยังคงอยู่ในประวัติคำสั่ง
ความเป็นไปได้ที่ 1: สร้างไฟล์. bat เพียง 2 ไฟล์แล้วเขียนลงในไฟล์แรก:
start <filename> // name of 2nd batch file
exit
ไฟล์แบทช์ 2 เป็นไฟล์ที่จะไม่ปิดท้าย ดังนั้นเมื่อคุณเปิดแบทช์ nr.1 มันจะเริ่มต้นที่ 2 และปิดบังตัวเอง เมื่อเสร็จสิ้นครั้งที่ 2 มันจะไม่ปิดลงอย่างสมบูรณ์ (ตราบใดที่คุณไม่ต้องออกทางออกในตอนท้าย)
ความเป็นไปได้ที่ 2: ไฟล์แบตช์ 1:
call <filename>
cls
echo End of file
pause
<any code you want>
เมื่อไฟล์ที่ 2 สิ้นสุดลงไฟล์นั้นจะไปยังไฟล์ 1 อีกครั้งและส่งออกส่วนที่เหลือของไฟล์ โดยที่คุณสามารถสร้างตัวจัดการข้อผิดพลาดได้ หาก nr.1 ขัดข้องมันจะเข้าสู่ nr.2 และแสดง
แฮ็คตัวเล็กนี้ขอให้ผู้ใช้ป้อนรหัสและเก็บไว้ในตัวแปร% exitkey% (ตัวแปรนี้สามารถเรียกได้ว่าอะไรก็ได้ที่คุณชอบ)
set /p exitkey= "Press any key to continue..."
หมายเหตุ: ช่องว่างหลังจาก '=' นั้นสำคัญมาก
pause
หรือ
echo text to display
pause>nul
ฉันรู้ว่าฉันมาช้า แต่วิธีที่ฉันชอบคือ:
:programend
pause>nul
GOTO programend
ด้วยวิธีนี้ผู้ใช้ไม่สามารถออกโดยใช้ Enter
มีปัญหากับคำตอบที่นี่ดังนั้นฉันจึงได้สิ่งนี้ซึ่งเหมาะกับฉัน (TM):
cmd /c node_modules\.bin\tsc
cmd /c node rollup_build.js
pause
มีสองวิธีที่จะทำมันขึ้นอยู่กับกรณีการใช้งาน
1) ถ้าคุณต้องการให้พรอมต์ Windows cmd เปิดอยู่เพื่อให้คุณเห็นผลการดำเนินการและปิดหลังจากนั้น ใช้
pause
2) ถ้าคุณต้องการให้ Windows cmd prompt เปิดอยู่และให้คุณสามารถรันคำสั่งบางคำสั่งได้ ใช้
cmd
ง่าย ๆ เพิ่มคำสั่งลงในค้างคาวบรรทัดสุดท้ายของคุณ แต่! หากคุณรีเซ็ตหรือล้างเส้นทางระบบของคุณคุณต้องเริ่มต้น cmd ด้วยเส้นทางแบบเต็มเช่น:
%windir%\system32\cmd.exe
ตัวอย่างเช่นฉันมีไฟล์ bat เพื่อรีเซ็ต jdk เป็นเวอร์ชันเก่าเช่นนี้:
PATH=C:\Program Files\Java\jdk1.6.0_45\bin;C:\apache-ant-1.7.1\bin
SET JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45
%windir%\system32\cmd.exe
เนื่องจากฉันรีเซ็ตเส้นทางของระบบฉันต้องเรียกใช้ cmd ด้วยเส้นทางแบบเต็มหรือระบบไม่สามารถหา cmd.exe ได้มันจะล้มเหลวในการเรียกใช้ cmd และเพียงแค่ปิดหน้าต่างแล้วคุณจะไม่เห็นข้อผิดพลาด msg .