Como faço para chamar outro script de lote de dentro de um script de lote?
Quero que seja executado em uma if
declaração.
Como faço para chamar outro script de lote de dentro de um script de lote?
Quero que seja executado em uma if
declaração.
Use CALL
como em
CALL nameOfOtherFile.bat
Isso bloqueará (pausará) a execução do arquivo em lote atual e esperará até que a CALL
edição seja concluída.
Se você não quiser bloquear, use START
.
Obtenha os detalhes essenciais usando CALL /?
ou START /?
no prompt do cmd.
Você pode simplesmente invocar o script em lote pelo nome, como se estivesse executando na linha de comando.
Então, suponha que você tenha um arquivo bar.bat
que diz echo This is bar.bat!
e deseja chamá-lo de um arquivo foo.bat
, você pode escrever isso em foo.bat
:
if "%1"=="blah" bar
Execute a foo blah
partir da linha de comando e você verá:
C:\>foo blah
C:\>if "blah" == "blah" bar
C:\>echo This is bar.bat!
This is bar.bat!
Mas cuidado : quando você invoca um script em lote de outro script em lote, o script em lote original para de ser executado. Se quiser executar o script de lote secundário e depois retornar ao script de lote anterior, você terá que usar o call
comando. Por exemplo:
if "%1"=="blah" call bar
echo That's all for foo.bat!
Se você correr foo blah
nisso, verá:
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!
Você deve usar CALL
CALL batch.bat
call
, ele continuará sua execução mesmo com um erro no script chamado.Aqui está um exemplo:
Você tem a.bat:
e b.bat chamado condicionalmente de a.bat:
fonte
Se você deseja abrir o arquivo em lote em outra janela, use
start
. Dessa forma, você pode basicamente executar dois scripts ao mesmo tempo. Em outras palavras, você não precisa esperar o script que acabou de chamar terminar. Todos os exemplos abaixo funcionam:Se você quiser esperar a conclusão do script, tente
start /w call batch.bat
, mas o batch.bat precisa terminar comexit
.fonte
Execute paralelamente em janelas de comando separadas em estado minimizado
dayStart.bat
Executar sequencialmente na mesma janela
release.bat
fonte
huh, eu não sei por que, mas a chamada não
call script.bat
funcionou, não retornou ao console original.cmd /k script.bat
retornou ao console original.fonte