Как запустить пакетный пакет script из пакета script?

Как мне вызвать другую партию script из пакета script?

Я хочу, чтобы он выполнялся в инструкции if.

Ответ 1

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

CALL nameOfOtherFile.bat

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

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

Получите подробные данные с помощью CALL /? или START /? в командной строке.

Ответ 2

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

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

Но будьте осторожны: при вызове пакета script из другого пакета script исходная партия script перестанет работать. Если вы хотите запустить вторичную партию script, а затем вернуться к предыдущей партии script, вам нужно будет использовать команду call. Например:

if "%1"=="blah" call bar
echo That 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 all for foo.bat!
That all for foo.bat!

Ответ 3

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

CALL batch.bat

Ответ 4

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

call script.bat

или просто

script.bat

Ответ 5

Вот пример:

У вас есть a.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"

Ответ 6

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

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

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

Ответ 7

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