นี่คือสิ่งที่ฉันพบในขณะที่รันแบตช์ไฟล์แบบขนาน (อินสแตนซ์หลายตัวของไฟล์แบ็ตเดียวกันในเวลาเดียวกันพร้อมกับพารามิเตอร์อินพุตที่แตกต่างกัน):
ให้บอกว่าคุณมีไฟล์ exe ที่ทำงานยาวเรียกว่า LongRunningTask.exe
หากคุณเรียกใช้ exe โดยตรงจากไฟล์ bat เฉพาะการเรียกครั้งแรกไปยัง LongRunningTask จะได้รับการบังคับใช้ในขณะที่ส่วนที่เหลือจะได้รับข้อผิดพลาดของระบบปฏิบัติการ "ไฟล์ถูกใช้งานโดยกระบวนการ"
หากคุณใช้คำสั่งนี้:
พารามิเตอร์ start / B / WAIT "" "LongRunningTask.exe" ""
คุณจะสามารถเรียกใช้ bat และ exe ได้หลายอินสแตนซ์ในขณะที่ยังคงรอให้ภารกิจเสร็จสิ้นก่อนที่ค้างคาวจะดำเนินการคำสั่งที่เหลือต่อไป ตัวเลือก / B คือการหลีกเลี่ยงการสร้างหน้าต่างใหม่จำเป็นต้องใช้อัญประกาศว่างเปล่าเพื่อให้คำสั่งใช้งานได้โปรดดูการอ้างอิงด้านล่าง
โปรดทราบว่าถ้าคุณไม่ใช้ / WAIT ในการเริ่มต้น LongRunningTask จะถูกดำเนินการในเวลาเดียวกันกว่าคำสั่งที่เหลือในไฟล์แบตช์ดังนั้นมันอาจสร้างปัญหาได้หากหนึ่งในคำสั่งเหล่านี้ต้องการเอาต์พุตของ LongRunningTask
ทำงานต่อ:
สิ่งนี้ไม่สามารถทำงานแบบขนาน:
- เรียก LongRunningTask.exe
สิ่งนี้จะทำงานแบบขนานและจะใช้ได้ตราบใดที่ไม่มีการพึ่งพาข้อมูลระหว่างเอาต์พุตของคำสั่งและส่วนที่เหลือของไฟล์ bat:
- พารามิเตอร์เริ่มต้น / B "" "LongRunningTask.exe" ""
สิ่งนี้จะทำงานแบบขนานและรอให้งานเสร็จดังนั้นคุณสามารถใช้เอาต์พุต:
- พารามิเตอร์ start / B / WAIT "" "LongRunningTask.exe" ""
การอ้างอิงสำหรับคำสั่งเริ่มต้น: ฉันจะเรียกใช้โปรแกรมจากแฟ้มแบตช์โดยไม่เปิดคอนโซลทิ้งไว้หลังจากที่โปรแกรมเริ่มทำงานได้อย่างไร