chamada
Chama um programa em lote de outro sem interromper o programa em lote pai. O comando call aceita rótulos como o destino da chamada.
Observação
A chamada não tem efeito no prompt de comando quando é usada fora de um script ou arquivo em lote.
Sintaxe
call [drive:][path]<filename> [<batchparameters>]]
call [:<label> [<arguments>]]
Parâmetros
Parâmetro | Descrição |
---|---|
[<drive>:][<path>]<filename> |
Especifica o local e o nome do programa em lote que você deseja chamar. O parâmetro <filename> é necessário e precisa ter uma extensão .bat ou .cmd. |
<batchparameters> |
Especifica as informações de linha de comando exigidas pelo programa em lote. |
:<label> |
Especifica o rótulo para o qual você deseja que um controle de programa em lote vá. |
<arguments> |
Especifica as informações de linha de comando a serem passadas para a nova instância do programa em lote, começando em :<label> . |
/? | Exibe a ajuda no prompt de comando. |
Parâmetros de lote
As referências de argumento do script de lote (%0, %1,...) estão listadas nas tabelas a seguir.
O uso do valor %* em um script de lote refere-se a todos os argumentos (por exemplo, %1, %2, %3...).
Você pode usar as seguintes sintaxes opcionais como substituições para parâmetros de lote (%n):
Parâmetro de lote | Descrição |
---|---|
%~1 | Expande %1 e remove as aspas ao redor. |
%~f1 | Expande %1 para um caminho totalmente qualificado. |
%~d1 | Expande %1 apenas para uma letra de unidade. |
%~p1 | Expande %1 apenas para um caminho. |
%~n1 | Expande %1 apenas para um nome de arquivo. |
%~x1 | Expande %1 apenas para uma extensão de nome de arquivo. |
%~s1 | Expande %1 para um caminho totalmente qualificado que contém apenas nomes curtos. |
%~a1 | Expande %1 para os atributos de arquivo. |
%~t1 | Expande %1 para a data e hora do arquivo. |
%~z1 | Expande %1 para o tamanho do arquivo. |
%~$PATH:1 | Pesquisa os diretórios listados na variável de ambiente PATH e expande %1 para o nome totalmente qualificado do primeiro diretório encontrado. Se o nome da variável de ambiente não estiver definido ou o arquivo não for encontrado pela pesquisa, esse modificador expandirá para a cadeia de caracteres vazia. |
A seguinte tabela mostra como você pode combinar modificadores com os parâmetros de lote para resultados compostos:
Parâmetro de lote com modificador | Descrição |
---|---|
%~dp1 | Expande %1 apenas para uma letra de unidade e caminho. |
%~nx1 | Expande %1 apenas para um nome de arquivo e extensão. |
%~dp$PATH:1 | Pesquisa os diretórios listados na variável de ambiente PATH para %1 e expande para a letra da unidade e o caminho do primeiro diretório encontrado. |
%~ftza1 | Expande %1 para exibir uma saída semelhante ao comando dir. |
Nos exemplos acima, %1 e PATH podem ser substituídos por outros valores válidos. A sintaxe %~ é encerrada por um número de argumento válido. Os modificadores %~ não podem ser usados com %*.
Comentários
Usando parâmetros de lote:
Parâmetros de lote podem conter qualquer informação que você possa passar para um programa de lote, incluindo opções de linha de comando, nomes de arquivo, os parâmetros de lote %0 a %9 e variáveis (por exemplo, %baud%).
Usando o parâmetro
<label>
:Usando call com o parâmetro
<label>
, você cria um contexto de arquivo de lote e passa o controle para a instrução após o rótulo especificado. Na primeira vez que o final do arquivo de lote é encontrado (ou seja, depois de saltar para o rótulo), o controle retorna para a instrução após a instrução call. Na segunda vez que o final do arquivo de lote é encontrado, o script de lote é encerrado.Usando barras verticais e símbolos de redirecionamento:
Não use barras verticais
(|)
nem símbolos de redirecionamento (<
ou>
) com call.Fazendo uma chamada recursiva
Você pode criar um programa em lote que chama a si mesmo. No entanto, você precisa fornecer uma condição de saída. Caso contrário, os programas de lote pai e filho poderão fazer um loop infinito.
Trabalhando com extensões de comando
Se as extensões de comando estiverem habilitadas, call aceitará
<label>
como destino da chamada. A sintaxe correta écall :<label> <arguments>
.
Exemplos
Para executar o programa checknew.bat de outro programa de lote, digite o seguinte comando no programa de lote pai:
call checknew
Se o programa de lote pai aceitar dois parâmetros de lote e você quiser que ele passe esses parâmetros para checknew.bat, digite o seguinte comando no programa de lote pai:
call checknew %1 %2