Comando If
Realiza processamento condicional em programas em lotes.
Sintaxe
if [not] errorlevel número comando[else expressão]
if [not] seqüência1==seqüência2 comando [else expressão]
if [not] exist nome_do_arquivo comando [else expressão]
Se as extensões de comando estiverem ativadas, use a seguinte sintaxe:
if [/i] seqüência1 operador_de_comparação seqüência2 comando [else expressão]
if cmdextversion número comando [else expressão]
if defined variável comando [else expressão]
Parâmetros
not
Especifica que o comando só deve ser executado se a condição anterior for falsa.
errorlevel número
Especifica uma condição verdadeira somente se o programa executado anteriormente pelo Cmd.exe tiver retornado um código de saída maior ou igual a número.
comando
Especifica o comando que deve ser executado se a condição anterior for atendida.
seqüência1==seqüência2
Especifica uma condição verdadeira somente se seqüência1 e seqüência2 forem iguais. Esses valores podem ser seqüências de caracteres literais ou variáveis em lote (%1, por exemplo). Não é necessário delimitar as seqüências de caracteres literais com aspas.
exist nome_do_arquivo
Especifica uma condição verdadeira, se nome_do_arquivo existir.
operador_de_comparação
Especifica um operador de comparação com três letras. A tabela a seguir lista os valores válidos para operador_de_comparação. Operador Descrição
EQU igual a
NEQ diferente de
LSS menor que
LEQ menor ou igual a
GTR maior que
GEQ maior ou igual a
/i
Força as comparações de seqüências de caracteres a ignorar maiúsculas e minúsculas. Você pode usar /i na forma seqüência1==seqüência2 de if. Estas comparações são genéricas, assim, se seqüência1 e seqüência2 compreenderem todos os dígitos numéricos, as seqüências serão convertidas em números e uma comparação numérica será realizada.
cmdextversion número
Especifica uma condição verdadeira apenas se o número interno da versão associado ao recurso de extensões de comando do Cmd.exe for maior ou igual a número. A primeira versão é 1. Ela é incrementada de um quando melhorias significantes são adicionadas às extensões de comando. A condicional cmdextversion nunca é verdadeira quando as extensões de comandos estão desativadas (por padrão, as extensões de comando estão ativadas).
defined variável
Especifica uma condição verdadeira, se variável estiver definida.
expressão
Especifica um comando e quaisquer parâmetros de linha de comando a ser passado ao comando em uma cláusula else.
/?
Exibe ajuda no prompt de comando.
Comentários
Se a condição especificada em um comando if for verdadeira, o comando seguinte à condição será executado. Se a condição for falsa, o comando na cláusula if será ignorado e os comandos na cláusula else serão executados caso ela tenha sido especificada.
Quando um programa pára, ele retorna um código de saída. É possível usar os códigos de saída como condições utilizando-se o parâmetro errorlevel.
Usando defined variável
Se você usar defined variável, as três seguintes variáveis serão adicionadas: %errorlevel%, %cmdcmdline% e %cmdextversion%.
%errorlevel% expande uma representação de seqüência do valor atual de errorlevel, desde que não exista ainda uma variável de ambiente com o nome ERRORLEVEL; nesse caso, você obterá o valor dessa variável. O exemplo a seguir ilustra como você pode usar errorlevel depois de executar um programa em lotes:
goto resposta%errorlevel%
:resposta0
:resposta1
echo O programa retornou o código 1
goto end
:end
echo concluído!
Você também pode usar os operadores de comparação operador_de_comparação da seguinte forma:
if %errorlevel% LEQ 1 goto okay
%cmdcmdline% expande a linha do comando original passada para Cmd.exe antes de qualquer processamento pelo Cmd.exe, desde que não exista ainda uma variável de ambiente com o nome cmdcmdline; nesse caso, você obterá o valor de cmdcmdline.
% cmdextversion % expande uma representação de seqüência do valor atual de cmdextversion, desde que não exista ainda uma variável de ambiente com o nome CMDEXTVERSION; nesse caso, você obterá o valor de CMDEXTVERSION.
Usando a cláusula else
A cláusula else deve ser usada na mesma linha que o comando após if. Por exemplo:
IF EXIST nome_do_arquivo. (
del nome_do_arquivo.
) ELSE (
echo nome_do_arquivo. ausente.
)
O código a seguir não funciona porque o comando del deve ser finalizado com uma nova linha:
IF EXIST nome_do_arquivo. del nome_do_arquivo. ELSE echo nome_do_arquivo. ausente
O código a seguir não funciona porque a cláusula else deve estar na mesma linha que o final do comando if:
IF EXIST nome_do_arquivo. del nome_do_arquivo.
ELSE echo nome_do_arquivo. ausente
Se desejar formatar tudo em uma única linha, use a seguinte forma da instrução original:
IF EXIST nome_do_arquivo. (del nome_do_arquivo.) ELSE echo nome_do_arquivo. ausente
Exemplos
Se não for possível localizar o arquivo Produto.dat, aparecerá a seguinte mensagem:
if not exist produto.dat echo Não é possível localizar o arquivo de dados
O exemplo a seguir ilustra uma mensagem de erro caso ocorra um erro durante a formatação de um disco na unidade A:
:begin
@echo off
format a: /s
if not errorlevel 1 goto end
echo Ocorreu um erro durante a formatação.
:end
echo Fim do programa em lotes.
Se não houver erro, a mensagem de erro não será exibida.
O comando if não pode ser utilizado para testar diretamente uma pasta, mas o dispositivo nulo (NUL) existe em todas as pastas. Portanto, você pode testar o dispositivo nulo para determinar se a pasta existe. O exemplo a seguir testa a existência de uma pasta:
if exist c:meudir\nul goto process
Formatando legenda | |
---|---|
Formato | Significado |
Itálico | Informações que o usuário deve fornecer |
Negrito | Elementos que o usuário deve digitar exatamente como mostrado |
Reticências (...) | Parâmetro que pode ser repetido várias vezes em uma linha de comando |
Entre colchetes ([]) | Itens opcionais |
Entre chaves ({});opções separadas por barra vertical (|).Exemplo: {even|odd} | Conjunto de opções entre as quais o usuário deve escolher apenas uma |
Fonte Courier | Código ou resultado de um programa |