Linha de comando - arquivo em lote chamando outro arquivo em lote

13

Eu tenho um arquivo em lotes que chama outro arquivo em lotes que existe no diretório PATH (basicamente chamando um executável com opções adicionais).

: bar.bat:
foo.bat file1.txt
foo.bat file2.txt
etc.

Em foo.bat:

foo.exe -t -s %1

O bar.bat executa o primeiro comando, mas é fechado imitadamente (ou seja, trabalhando apenas no arquivo1.txt ).

Como posso fazer com que esse arquivo em lotes chame o outro arquivo em lotes mais de uma vez?

Dani
fonte

Respostas:

14

Use a palavra-chave CALL:

call foo.bat file1.txt
call foo.bat file2.txt
splattne
fonte
1
<copiado da resposta de Duncan Smart, apenas para mantê-la unida> Além da resposta de @ splattne, use exit / b no arquivo em lotes CALLed se precisar retornar mais cedo.
263 Brad Brad
1
Você também pode usar goto :eofpara retornar mais cedo. exit /bgeralmente é necessário apenas se você precisar do código de retorno.
Joey
Não sei por que, mas estou lutando para que isso funcione, tentei tanto exit /be goto: eof. Tudo bem anexar a saída do bastão chamado? call foo.bat > myfile
SSH Este
4

Além da resposta de @ splattne, use exit /bno CALLarquivo em lotes ed se precisar retornar mais cedo.

Duncan Smart
fonte
2

Outra opção (para compatibilidade com o DOS anterior à versão 3.3 :-)) é chamar o processo de comando com a opção filho (/ c) e o nome do outro arquivo em lotes a ser processado. Isso também fará uma ligação em vez de uma cadeia e até funcionará em máquinas verdadeiramente antigas (apenas no caso de alguém passar por isso e se importar). :-)

Brian Knoblauch
fonte
0

@echo off

eco WbLegalReport.cmd

Eu:

CD I: \ CFS \ Batch \ jarDir

eco% CD%

WbLegalReport.cmd

eco% CD%

echo WatchResrAddDeleted.cmd

eco% CD%

WatchRestrAddDeleted.cmd

eco% CD%

O que estou tentando fazer aqui é chamar esses dois arquivos em lotes em uma sequência.

Não foi possível fazer isso.

ajuda por favor.

Na verdade, está falhando no script filho, pois o controle não retorna ao script principal


fonte
0

Sanket, não chame o arquivo em lotes diretamente. Use o comando "CHAMAR". Veja o exemplo de splattne .

pepoluan
fonte