Как мне вызвать другую партию script из пакета script?
Я хочу, чтобы он выполнялся в инструкции if
.
Как мне вызвать другую партию script из пакета script?
Я хочу, чтобы он выполнялся в инструкции if
.
Используйте CALL
, как в
CALL nameOfOtherFile.bat
Это блокирует (приостанавливает) выполнение текущего командного файла и будет ждать завершения CALL
ed.
Если вы не хотите его блокировать, используйте START
.
Получите подробные данные с помощью CALL /?
или START /?
в командной строке.
Вы можете просто вызвать пакетный 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!
Вы должны использовать CALL
CALL batch.bat
Вы можете использовать
call script.bat
или просто
script.bat
Вот пример:
У вас есть 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"
Если вы хотите открыть командный файл в другом окне, используйте start
. Таким образом, вы можете запустить два сценария одновременно. Другими словами, вам не нужно ждать завершения сценария, который вы только что вызвали. Все примеры ниже работают:
start batch.bat
start call batch.bat
start cmd /c batch.bat
Если вы хотите ждать окончания работы скрипта, попробуйте start/w call batch.bat
, но batch.bat должен закончиться exit
.
да, я не знаю почему, но звонок не сработал call script.bat
не вернулся в исходную консоль. cmd/k script.bat
вернулся к исходной консоли.