Как мне вызвать другую партию 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 вернулся к исходной консоли.