Как запустить пакетный скрипт из пакетного скрипта? - PullRequest
83 голосов
/ 26 января 2011

Как мне вызвать другой пакетный сценарий из пакетного сценария?

Я хочу, чтобы он выполнялся в операторе if.

Ответы [ 7 ]

196 голосов
/ 26 января 2011

Используйте CALL как в

CALL nameOfOtherFile.bat

Это заблокирует (приостановит) выполнение текущего командного файла и будет ждать, пока не завершится CALL ed.

Если вы не хотите, чтобы он блокировался, используйте START.

Получите подробности, используя CALL /? или START /? из командной строки.

20 голосов
/ 26 января 2011

Вы можете просто вызвать пакетный скрипт по имени, как будто вы работаете в командной строке.

Итак, предположим, что у вас есть файл 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!
6 голосов
/ 26 января 2011

Вы должны использовать CALL

CALL batch.bat
2 голосов
/ 26 января 2011

Вы можете использовать

call script.bat

или просто

script.bat
1 голос
/ 26 января 2011

Вот пример:

У вас есть .bat:

@echo off
if exist b.bat goto RUNB
goto END
:RUNB
b.bat
:END

и b.bat вызывается условно из a.bat:

@echo off 
echo "This is b.bat"
0 голосов
/ 06 мая 2019

Если вы хотите открыть командный файл в другом окне, используйте start. Таким образом, вы можете запустить два сценария одновременно. Другими словами, вам не нужно ждать завершения сценария, который вы только что вызвали. Все приведенные ниже примеры работы:

start batch.bat
start call batch.bat
start cmd /c batch.bat

Если вы хотите дождаться завершения сценария, попробуйте start /w call batch.bat, но batch.bat должен заканчиваться exit.

0 голосов
/ 25 апреля 2019

да, я не знаю почему, но call не помогли
call script.bat не вернулась к исходной консоли.
cmd /k script.bat вернулась к исходной консоли.

...