ฉันจะเรียกสคริปต์ชุดงานอื่นจากภายในสคริปต์ชุดงานได้อย่างไร
ฉันต้องการให้ดำเนินการใน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ต่อแม้จะมีข้อผิดพลาด ในสคริปต์ที่เรียกว่า