You are on page 1of 4

Comando IF

Postado por Rmulo Costa on 15:58 3 comentrios

If
O comando realiza processamento condicional em programas em lotes.

Sintaxe
if [not] errorlevel Nmero Comando [else Expresso]
if [not] Seqncia1==Comando da Seqncia2 [else Expresso]
if [not] exist Nome_de_Arquivo Comando [else Expresso]
Se as extenses de comando estiverem ativadas, use a seguinte sintaxe:
if [/i] Seqncia1 Operador_de_Comparao Seqncia2 Comando [else Expresso]
if cmdextversion Nmero Comando [else Expresso]
if defined Varivel Comando [else Expresso]

Parmetros
not
Especifica que o comando s deve ser executado se a condio anterior for
falsa.
errorlevel Nmero
Especifica uma condio verdadeira somente se o programa executado
anteriormente por Cmd.exe tiver apresentado um cdigo de sada igual ou
superior aNmero.
Comando
Especifica o comando que deve ser executado se a condio anterior for
atendida.
Seqncia1 == Seqncia2
Especifica uma condio verdadeira somente
se Seqncia1 e Seqncia2 forem iguais. Esses valores podem ser
seqncias literais ou variveis em lotes (%1, por exemplo). No
necessrio delimitar as seqncias de caracteres literais com aspas.
exist Nome_do_Arquivo
Especifica uma condio verdadeira, se Nome_do_Arquivo existir.
operador_de_comparao
Especifica um operador de comparao com trs letras. A tabela a seguir
lista os valores vlidos para Operador_de_Comparao.

Operador
EQU

Descrio
igual a

NEQ

diferente de

LSS

menor que

LEQ

menor ou igual a

GTR

maior que

GEQ

maior ou igual a

/i
Fora as comparaes de seqncias de caracteres a ignorar maisculas e
minsculas. Voc pode usar /i na forma Seqncia1==Seqncia2 de if.
Essas comparaes so genricas, ou seja, se
tanto Seqncia1 quanto Seqncia2 forem constitudas de dgitos
numricos, as seqncias sero convertidas em nmeros e uma comparao
numrica ser realizada.
cmdextversion Nmero
Especifica uma condio verdadeira somente se o nmero da verso interna
associado ao recurso de Extenses de Comando do Cmd.exe for igual ou
superior a Nmero. A primeira verso 1. Ela incrementada de um quando
melhorias significantes so adicionadas s extenses de comando. A
condicionalcmdextversion nunca verdadeira quando as extenses de
comandos esto desabilitadas (por padro, as extenses de comando esto
habilitadas).
defined Varivel
Especifica uma condio verdadeira, se Varivel estiver definida.
Expresso
Especifica um comando e parmetros de linha de comando a serem
passados ao comando em uma clusula else.
/?
Exibe ajuda no prompt de comando.

Comentrios

Se a condio especificada em um comando if for verdadeira, o comando


seguinte condio ser executado. Se a condio for falsa, o comando na
clusula if ser ignorado e o comando executar qualquer comando na
clusula else (caso o comando tenha sido especificado na clusula else).
Quando um programa pra, ele retorna um cdigo de sada. Para usar
cdigos de sada como condies, use errorlevel.
Usando definedVarivel
Se voc usar definedVarivel, as trs variveis a seguir sero
adicionadas: %errorlevel%, %cmdcmdline% e %cmdextversion%.
%errorlevel% expandida em uma representao de seqncias do valor atual
de errorlevel, desde que no haja uma varivel de ambiente com o nome
ERRORLEVEL; nesse caso, voc obteria o valor dessa varivel. O exemplo a
seguir ilustra como voc pode usar errorlevel depois de executar um programa
em lotes:
goto answer%errorlevel%
:answer0
echo Programa apresentou cdigo 0

:answer1
echo Programa apresentou cdigo 1
goto End
:end
echo done!
Voc tambm pode usar os operadores de
comparao Operador_de_Comparao da seguinte forma:
if %errorlevel% LEQ 1 goto okay
%cmdcmdline% expandido na linha de comando original passada para
Cmd.exe antes de qualquer processamento do aplicativo, desde que no haja
uma varivel de ambiente com o nome CMDCMDLINE; nesse caso, voc obteria o
valor dessa varivel.
% cmdextversion % expandido em uma representao de seqncias do
valor atual de cmdextversion, desde que no haja uma varivel de ambiente
com o nome CMDEXTVERSION; nesse caso, voc obteria o valor de dessa
varivel.
Usando a clusula else
A clusula else deve ser usada na mesma do comando aps if. Por exemplo:
IF EXIST Nome_do_Arquivo. (
del Nome_do_Arquivo.
) ELSE (
echo Nome_do_Arquivo. ausente.
)
O cdigo a seguir no 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 cdigo a seguir no funciona porque a clusula 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 instruo
original:
IF EXIST Nome_do_Arquivo. (del Nome_do_Arquivo.) ELSE echo
Nome_do_Arquivo. ausente

Exemplos
Para exibir a mensagem "Impossvel localizar arquivo de dados" caso o arquivo
Produto.dat no seja encontrado, digite:
if not exist produto.dat echo Impossvel localizar arquivo de dados
O exemplo a seguir ilustra uma mensagem de erro caso ocorra um erro durante a
formatao de um disco na unidade A:
:begin
@echo off

format a: /s
if not errorlevel 1 goto end
echo Ocorreu um erro durante a formatao.
:end
echo Fim do programa em lotes.
Se no houver erro, a mensagem de erro no ser exibida.

Legenda da formatao
Formato
Itlico

Significado
Informaes que o usurio deve
fornecer

Negrito

Elementos que o usurio deve


digitar exatamente como exibido

Reticncias (...)

Parmetro que pode ser repetido


vrias vezes em uma linha de
comando

Entre colchetes ([])

Itens opcionais

Entre chaves ({}); opes separadas por barra


vertical (|). Exemplo: {even|odd}

Conjunto de opes entre as quais


o usurio deve escolher apenas
uma

Courier font

Sada de cdigo ou de programa


fonte:
http://msdn.microsoft.com/ptbr/subscriptions/cc772933.aspx

You might also like