Відповіді:
Використовуйте 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
Якщо ви хочете відкрити пакетний файл в іншому вікні, використовуйте 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
, він продовжить своє виконання навіть з помилкою у викликаному сценарії.