Câu trả lời:
Sử dụng CALL
như trong
CALL nameOfOtherFile.bat
Thao tác này sẽ chặn (tạm dừng) việc thực thi tệp lô hiện tại và nó sẽ đợi cho đến khi CALL
chỉnh sửa hoàn tất.
Nếu bạn không muốn nó chặn, hãy sử dụng START
thay thế.
Nhận chi tiết nitty-gritty bằng cách sử dụng CALL /?
hoặc START /?
từ dấu nhắc cmd.
Bạn chỉ có thể gọi tập lệnh lô theo tên, như thể bạn đang chạy trên dòng lệnh.
Vì vậy, giả sử bạn có một tệp bar.bat
cho biết echo This is bar.bat!
và bạn muốn gọi nó từ một tệp foo.bat
, bạn có thể viết điều này trong foo.bat
:
if "%1"=="blah" bar
Chạy foo blah
từ dòng lệnh và bạn sẽ thấy:
C:\>foo blah
C:\>if "blah" == "blah" bar
C:\>echo This is bar.bat!
This is bar.bat!
Nhưng hãy cẩn thận : Khi bạn gọi một tập lệnh lô từ một tập lệnh loạt khác, tập lệnh loạt ban đầu sẽ ngừng chạy. Nếu bạn muốn chạy tập lệnh lô thứ cấp và sau đó quay lại tập lệnh lô trước đó, bạn sẽ phải sử dụng call
lệnh. Ví dụ:
if "%1"=="blah" call bar
echo That's all for foo.bat!
Nếu bạn chạy foo blah
trên đó, bạn sẽ thấy:
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!
Bạn nên sử dụng CALL
CALL batch.bat
Nếu bạn muốn mở tệp loạt trong một cửa sổ khác, hãy sử dụng start
. Bằng cách này, về cơ bản bạn có thể chạy hai tập lệnh cùng một lúc. Nói cách khác, bạn không phải đợi tập lệnh bạn vừa gọi kết thúc. Tất cả các ví dụ dưới đây đều hoạt động:
start batch.bat
start call batch.bat
start cmd /c batch.bat
Nếu bạn muốn đợi tập lệnh kết thúc, hãy thử start /w call batch.bat
, nhưng batch.bat phải kết thúc bằng 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
huh, tôi không biết tại sao, nhưng cuộc gọi không thực hiện được thủ thuật
call script.bat
không quay lại bảng điều khiển ban đầu.
cmd /k script.bat
đã quay trở lại bảng điều khiển ban đầu.
call
, tập lệnh sẽ tiếp tục thực thi ngay cả khi có lỗi trong tập lệnh được gọi.