คุณอาจต้องการให้คำสั่ง START เริ่มต้นการประมวลผลแบบขนานแม้ว่าสามารถทำได้ผ่าน WMIC โปรดทราบว่าอาร์กิวเมนต์แรกจะถือเป็นชื่อหน้าต่างหากมีการเสนอราคา นั่นคือเหตุผลที่อาร์กิวเมนต์แรกของฉันคือสตริงว่าง /B
ตัวเลือกรันคำสั่งในหน้าต่างเดียวกัน ลบออกหากคุณต้องการหน้าต่างใหม่สำหรับแต่ละคำสั่ง
ไม่มีคำสั่งแบตช์ดั้งเดิมที่เรียบง่ายหรือตัวเลือกเพื่อรอชุดของกระบวนการแบบขนานให้เสร็จ
ฉันชอบที่จะเปลี่ยนเส้นทางการจัดการไฟล์ที่ไม่ได้ใช้ไปยังไฟล์สำหรับแต่ละกระบวนการดังนั้นการสร้างล็อคพิเศษ ฉันสามารถตรวจพบว่ากระบวนการยังคงทำงานอยู่โดยพยายามเปลี่ยนเส้นทาง(CALL )
(ให้มีผลบังคับใช้เป็น null) ไปยังไฟล์ล็อคเดียวกัน หากการเปลี่ยนเส้นทางล้มเหลวแสดงว่ากระบวนการยังคงทำงานอยู่ สำเร็จแสดงว่ากระบวนการได้สิ้นสุดลงแล้ว
การทดสอบจะต้องทำกับไฟล์ล็อคแต่ละไฟล์ในการวนซ้ำโพล การเพิ่มความล่าช้าเป็นความคิดที่ดีในการป้องกันการวนซ้ำจากการใช้ทรัพยากรในทางที่ผิด
@echo off
set "lock=%temp%\%~nx0.lock"
start "" /b "timeout" 5 9>"%lock%.1"
start "" /b "timeout" 8 9>"%lock%.2"
:wait
timeout 1 /nobreak >nul
2>nul (for %%F in ("%lock%.*") do 9>"%%F" (call ) && del "%%F" || goto :wait)
echo OK
หากคุณมีกระบวนการแบบขนานจำนวนมากที่ต้องการเรียกใช้และคุณต้องการ จำกัด จำนวนกระบวนการพร้อมกันคุณอาจสนใจhttps://stackoverflow.com/a/11715437/1012053
wait-job
( technet.microsoft.com/en-us/library/Hh849735 .aspx )