Как вызвать другой пакетный сценарий из пакетного сценария?
Я хочу, чтобы это выполнялось в if
заявлении.
Ответы:
Использовать CALL
как в
CALL nameOfOtherFile.bat
Это заблокирует (приостановит) выполнение текущего командного файла и будет ждать, пока CALL
не завершится редактирование.
Если вы не хотите, чтобы он блокировался, используйте START
вместо этого.
Получите подробные сведения, используя CALL /?
или START /?
из командной строки.
Вы можете просто вызвать пакетный скрипт по имени, как если бы вы выполняли его из командной строки.
Итак, предположим, что у вас есть файл, в 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
он продолжит выполнение даже с ошибкой. в вызываемом скрипте.