Um arquivo em lote do Windows ( called.bat
ou called.cmd
) pode ser chamado de outro arquivo em lote ( caller.bat
ou caller.cmd
) ou prompt cmd.exe interativo de várias maneiras:
- chamada direta:
called.bat
- usando o comando de chamada:
call called.bat
- usando o comando cmd:
cmd /c called.bat
- usando o comando start:
start called.bat
Estou com problemas para diferenciar o uso pretendido com base no texto de ajuda: quando usar qual? por exemplo, por que eu poderia usar o comando 'call' em vez da chamada direta. O que é diferente?
Estou interessado em algum relatório de resumo que analisa todas as 4 possibilidades (e outras, se houver alguma faltando) de vários pontos de vista: casos de uso recomendados para os quais eles são projetados para se adequar, geração de processo, contexto de execução, ambiente, processamento de código de retorno.
Observação: estou usando o Windows XP SP3.
fonte
start "" [options] command
Uma coisa não está clara nos comentários aqui: quando você chama um arquivo em lote de outro usando apenas seu nome (Caso # 1 na pergunta original), a execução é interrompida no arquivo em lote de chamada. Por exemplo, nestas linhas:
A linha 'echo Hello' (e qualquer coisa que vier depois) não será chamada. Se você usar a palavra-chave 'call', a execução continuará após a chamada. Portanto, neste caso:
A linha 'echo Hello' será chamada.
Além disso, todas as variáveis definidas no arquivo called.bat também serão passadas de volta para o processo de chamada.
Imagine um arquivo 'called.bat' que tivesse esta linha:
Então,% MYVAR% estaria disponível para o arquivo em lote de chamada se usado:
Mas, não estaria usando
fonte