If
Realiza processamento condicional em programas em lotes.
Sintaxe
if [not] errorlevel número comando[else expressão]
if [not] sequência1==sequê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] sequência1 operador_de_comparação sequê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.
- sequência1==sequência2
- Especifica uma condição verdadeira somente se sequência1 e sequência2 forem iguais. Esses valores podem ser sequências de caracteres literais ou variáveis em lote (%1, por exemplo). Não é necessário delimitar as sequê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 sequências de caracteres a ignorar maiúsculas e minúsculas. Você pode usar /i na forma sequência1==sequência2 de if. Estas comparações são genéricas, assim, se sequência1 e sequência2 compreenderem todos os dígitos numéricos, as sequê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 sequê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 sequê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á mostrada.
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
XOX