Как вызвать другой пакетный сценарий из пакетного сценария?
Я хочу, чтобы это выполнялось в 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он продолжит выполнение даже с ошибкой. в вызываемом скрипте.