Dường như một kịch bản cmd chứa:cmd.exe: khi sử dụng cuộc gọi để chạy chương trình bên ngoài
prog1
prog2
không giống như
call prog1
call prog2
điểm của việc sử dụng các lệnh CALL là gì ?
Dường như một kịch bản cmd chứa:cmd.exe: khi sử dụng cuộc gọi để chạy chương trình bên ngoài
prog1
prog2
không giống như
call prog1
call prog2
điểm của việc sử dụng các lệnh CALL là gì ?
Bạn nên sử dụng call
khi bạn cần gọi một chương trình lô khác (tập lệnh cmd). Sử dụng 'cuộc gọi' sẽ không có hiệu lực nếu prog1
là một tệp thi hành. (prog1.exe
)
Nếu bạn, ví dụ, có hai kịch bản:
cmd1.cmd
cmd2.cmd
Và trong vòng cmd1.cmd
bạn có một dòng:
cmd2.cmd
... sau đó kịch bản của bạn sẽ ngừng càng sớm càng cmd2.cmd
đã hoàn tất thi hành. Thay vào đó bạn nên sử dụng:
call cmd2.cmd
Aha - vì vậy sự khác biệt giữa các tập tin thực thi bên ngoài và kịch bản cmd bên ngoài là chìa khóa.Cảm ơn cho sự giác ngộ. – Martin
Cuộc gọi thông thường được sử dụng để chạy một tệp lô khác trong một tệp lô. Khi tập tin batch được gọi là hoàn thành, phần còn lại của tập tin batch gốc được hoàn thành.
Lưu ý nếu tệp lô không tồn tại, nó sẽ cung cấp thông báo lỗi.
Cú pháp là: CALL [drive:][path]filename [batch-parameters]
Không có hạn chế trong nơi để gọi nó. Bạn có thể sử dụng lệnh CALL trong bất kỳ tệp lô nào để gọi một tệp lô khác.
Hy vọng điều này sẽ hữu ích.
Bạn nên sử dụng call
khi bạn có muốn:
Một tập tin lệnh với dòng:
number2.cmd
sẽ chuỗi đến tập tin number2.cmd
, có nghĩa là nó sẽ chạy kịch bản đó nhưng không quay trở lại để tiếp tục thực hiện trên một dòng.
Đối với các điểm thứ hai, bạn có thể làm những việc như:
call :subroutine
call :subroutine
goto :eof
:subroutine
echo in here
goto :eof
và bạn sẽ nhận được in here
in hai lần. Khả năng gọi hàm này trong script lệnh thực sự khá tiện dụng.
+1 - Tính năng chương trình con trông rất hữu ích. – Martin
@paxdiablo, Bạn có ý nghĩa gì bởi "* chain * đối với tệp' number2.cmd' "? – Pacerier
@Pacerier, tôi có nghĩa là nó sẽ không trở lại kịch bản hiện tại khi thực hiện, một cụm từ tôi đã tổ chức vào kể từ ngày lập trình BASIC của tôi quá nhiều thập kỷ trước đây :-) Xem https://en.m.wikipedia.org/wiki/Chain_loading để biết chi tiết. Tôi hy vọng rằng điều đó rõ ràng hơn với bản chỉnh sửa. – paxdiablo
Thuộc về superuser. – leppie
Xem http://stackoverflow.com/q/1103994/632951 có câu trả lời tốt hơn. – Pacerier