ฉันจะเรียกสคริปต์ชุดงานอื่นจากภายในสคริปต์ชุดงานได้อย่างไร
ฉันต้องการให้ดำเนินการในif
คำสั่ง
ฉันจะเรียกสคริปต์ชุดงานอื่นจากภายในสคริปต์ชุดงานได้อย่างไร
ฉันต้องการให้ดำเนินการในif
คำสั่ง
คำตอบ:
ใช้CALL
เป็น
CALL nameOfOtherFile.bat
การดำเนินการนี้จะบล็อก (หยุดชั่วคราว) การทำงานของไฟล์แบตช์ปัจจุบันและจะรอจนกว่าการCALL
แก้ไขจะเสร็จสิ้น
หากคุณไม่ต้องการให้บล็อกให้ใช้START
แทน
รับรายละเอียดที่น่าสนใจโดยใช้CALL /?
หรือSTART /?
จากพรอมต์ cmd
คุณสามารถเรียกใช้สคริปต์แบตช์ตามชื่อได้ราวกับว่าคุณกำลังรันบนบรรทัดคำสั่ง
ดังนั้นสมมติว่าคุณมีไฟล์bar.bat
ที่ระบุecho This is bar.bat!
และต้องการเรียกใช้จากไฟล์foo.bat
คุณสามารถเขียนสิ่งนี้ในfoo.bat
:
if "%1"=="blah" bar
เรียกใช้foo blah
จากบรรทัดคำสั่งแล้วคุณจะเห็น:
C:\>foo blah
C:\>if "blah" == "blah" bar
C:\>echo This is bar.bat!
This is bar.bat!
แต่ระวัง : เมื่อคุณเรียกใช้สคริปต์ชุดงานจากสคริปต์ชุดงานอื่นสคริปต์ชุดงานดั้งเดิมจะหยุดทำงาน หากคุณต้องการรันสคริปต์แบตช์รองแล้วกลับไปที่สคริปต์แบตช์ก่อนหน้าคุณจะต้องใช้call
คำสั่ง ตัวอย่างเช่น:
if "%1"=="blah" call bar
echo That's all for foo.bat!
หากคุณดำเนินการfoo blah
ดังกล่าวคุณจะเห็น:
C:\>foo blah
C:\>if "blah" == "blah" call bar
C:\>echo This is bar.bat!
This is bar.bat!
C:\>echo That's all for foo.bat!
That's all for foo.bat!
คุณควรใช้ CALL
CALL batch.bat
นี่คือตัวอย่าง:
คุณมี a.bat:
@echo off
if exist b.bat goto RUNB
goto END
:RUNB
b.bat
:END
และ b.bat เรียกเงื่อนไขจาก a.bat:
@echo off
echo "This is b.bat"
หากคุณต้องการเปิดไฟล์แบตช์ในหน้าต่างอื่นให้ใช้start
. ด้วยวิธีนี้คุณสามารถเรียกใช้สองสคริปต์พร้อมกันได้ กล่าวอีกนัยหนึ่งคุณไม่จำเป็นต้องรอให้สคริปต์ที่คุณเพิ่งเรียกจนจบ ตัวอย่างทั้งหมดด้านล่างทำงาน:
start batch.bat
start call batch.bat
start cmd /c batch.bat
หากคุณต้องการที่จะรอสคริปต์เพื่อให้เสร็จลองstart /w call batch.bat
แต่ batch.bat exit
มีจบลงด้วยการ
dayStart.bat
start "startOfficialSoftwares" /min cmd /k call startOfficialSoftwares.bat
start "initCodingEnvironment" /min cmd /k call initCodingEnvironment.bat
start "updateProjectSource" /min cmd /k call updateProjectSource.bat
start "runCoffeeMachine" /min cmd /k call runCoffeeMachine.bat
release.bat
call updateDevelVersion.bat
call mergeDevelIntoMaster.bat
call publishProject.bat
ฉันไม่รู้ว่าทำไม แต่โทรไม่ได้ทำเคล็ดลับ
call script.bat
ไม่ได้กลับไปที่คอนโซลเดิม
cmd /k script.bat
กลับไปที่คอนโซลเดิม
call
ต่อแม้จะมีข้อผิดพลาด ในสคริปต์ที่เรียกว่า