คำตอบอื่น ๆ ทั้งหมดถูกต้อง: ใช้การโทร ตัวอย่างเช่น:
call "msbuild.bat"
ประวัติศาสตร์
ในรุ่น DOS โบราณมันเป็นไปไม่ได้ที่จะเรียกใช้ไฟล์แบตช์ซ้ำ จากนั้นคำสั่งการโทรถูกแนะนำที่เรียกว่าเชลล์ cmd อื่นเพื่อดำเนินการแบตช์ไฟล์และส่งกลับการดำเนินการกลับไปที่การเรียกเชลล์ cmd เมื่อเสร็จสิ้น
เห็นได้ชัดว่าในรุ่นต่อมาไม่มีเชลล์ cmd อื่นที่จำเป็นอีกต่อไป
ในวันแรก ๆ หลายชุดแบทช์ขึ้นอยู่กับความจริงที่ว่าการเรียกไฟล์แบตช์จะไม่กลับไปที่ไฟล์แบตช์การโทร การเปลี่ยนลักษณะการทำงานที่ไม่มีไวยากรณ์เพิ่มเติมจะทำให้ระบบหลาย ๆ ระบบแตกเช่นแบทช์เมนู (การใช้แบตช์ไฟล์สำหรับโครงสร้างเมนู)
ในหลาย ๆ กรณีกับ Microsoft ความเข้ากันได้แบบย้อนหลังเป็นสาเหตุของพฤติกรรมนี้
เคล็ดลับ
หากไฟล์แบตช์ของคุณมีช่องว่างในชื่อให้ใช้เครื่องหมายคำพูดล้อมรอบชื่อ:
call "unit tests.bat"
โดยวิธีการ: หากคุณไม่มีชื่อแบทช์ไฟล์ทั้งหมดคุณสามารถใช้สำหรับการทำเช่นนี้ (ไม่รับประกันลำดับที่ถูกต้องของการเรียกไฟล์แบทช์มันเป็นไปตามคำสั่งของระบบไฟล์):
FOR %x IN (*.bat) DO call "%x"
นอกจากนี้คุณยังสามารถตอบสนองข้อผิดพลาดระดับหลังจากการโทร ใช้:
exit /B 1 # Or any other integer value in 0..255
เพื่อคืนข้อผิดพลาดระดับ 0 หมายถึงการดำเนินการที่ถูกต้อง ในไฟล์แบตช์การเรียกคุณสามารถตอบสนองการใช้
if errorlevel neq 0 <batch command>
ใช้if errorlevel 1
หากคุณมี Windows รุ่นเก่ากว่า NT4 / 2000 / XP เพื่อตรวจสอบข้อผิดพลาดระดับที่ 1 ขึ้นไป
เพื่อควบคุมการไหลของไฟล์แบทช์มี goto :-(
if errorlevel 2 goto label2
if errorlevel 1 goto label1
...
:label1
...
:label2
...
ดังที่คนอื่น ๆ ชี้ให้ดูที่ระบบการสร้างเพื่อแทนที่ไฟล์แบตช์