If
O comando realiza processamento condicional em programas em lotes.
Sintaxe
if [not] errorlevel Número Comando [else Expressão]
if [not] Seqüência1==Comando da Seqüência2 [else Expressão]
if [not] exist Nome_de_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 por Cmd.exe tiver apresentado um código de saída igual ou superior aNú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 literais ou variáveis em lotes (%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 EQUigual aNEQdiferente deLSSmenor queLEQmenor ou igual aGTRmaior queGEQmaior 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. Essas comparações são genéricas, ou seja, se tanto Seqüência1 quanto Seqüência2 forem constituídas de 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 somente se o número da versão interna associado ao recurso de Extensões de Comando do Cmd.exe for igual ou superior a Número. A primeira versão é 1. Ela é incrementada de um quando melhorias significantes são adicionadas às extensões de comando. A condicionalcmdextversion nunca é verdadeira quando as extensões de comandos estão desabilitadas (por padrão, as extensões de comando estão habilitadas).
- defined Variável
- Especifica uma condição verdadeira, se Variável estiver definida.
- Expressão
- Especifica um comando e parâmetros de linha de comando a serem passados 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 o comando executará qualquer comando na cláusula else (caso o comando tenha sido especificado na cláusula else).
- Quando um programa pára, ele retorna um código de saída. Para usar códigos de saída como condições, use errorlevel.
- Usando definedVariável
Se você usar definedVariável, as três variáveis a seguir serão adicionadas: %errorlevel%, %cmdcmdline% e %cmdextversion%.
%errorlevel% é expandida em uma representação de seqüências do valor atual de errorlevel, desde que não haja uma variável de ambiente com o nome ERRORLEVEL; nesse caso, você obteria o valor dessa variável. O exemplo a seguir ilustra como você pode usar errorlevel depois de executar um programa em lotes:
Você também pode usar os operadores de comparação Operador_de_Comparação da seguinte forma:
%cmdcmdline% é expandido na linha de comando original passada para Cmd.exe antes de qualquer processamento do aplicativo, desde que não haja uma variável de ambiente com o nome CMDCMDLINE; nesse caso, você obteria o valor dessa variável.
% cmdextversion % é expandido em uma representação de seqüências do valor atual de cmdextversion, desde que não haja uma variável de ambiente com o nome CMDEXTVERSION; nesse caso, você obteria o valor de dessa variável. - Usando a cláusula else
A cláusula else deve ser usada na mesma do comando após if. Por exemplo:
O código a seguir não funciona porque o comando del deve ser finalizado com uma nova linha:
O código a seguir não funciona porque a cláusula else deve estar na mesma linha que o final do comando if:
Se desejar formatar tudo em uma única linha, use a seguinte forma da instrução original:
Exemplos
Legenda da formatação
Formato | Significado |
---|---|
Itálico
|
Informações que o usuário deve fornecer
|
Negrito
|
Elementos que o usuário deve digitar exatamente como é exibido
|
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
|
Courier font fonte: |
Saída de código ou de programa
|
Amigo, tudo bem? Preciso escrever um Batch que;
ResponderExcluirExecute um PING em um determinado IP
Se o IP "pingado" responder positivamente
Exibe a Mensagem "COMUNICACAO COM SERVIDOR BEM SUCEDIDA"
Se o IP não responder
Exibe a Mensagem "SEM COMUNICACAO COM SERVIDOR"
Pode me ajudar, desde ja obrigado.
David Oliveira
david@pcnetonline.com.br
eu to indo em umonte de site atras dessa solocão tambem. faz um tempao que to procurando como fazer isso
ExcluirObs.: tem que rodar como Administrador.
Excluir@echo off
:inicio
color 0F
cls
set /p site=Digite o site:
echo.
Echo Testando...
::retirando o ">null" ele mostra os detalhes.
ping -a %site% >null
if not errorlevel 1 goto ok
echo.
color 0c
echo --= SEM COMUNICACAO COM SERVIDOR =--
pause
goto inicio
:ok
color 02
echo.
echo --= COMUNICACAO COM SERVIDOR BEM SUCEDIDA =--
echo.
pause
goto inicio
Queria usar este comando para me ajudar com uma verificação de tarefa agendada, tenho um comando que cria uma tarefa no windows e queria verificar antes de criar se já existe uma tarefa com o mesmo nome, caso exista, o meu comando criaria uma outra tarefa com outro nome pre definido.
ResponderExcluirOlá estou criando um script colocando uma variável dentro comando if como ==, mas eu quero colocar 2 variáveis dentro do mesmo comando if utilizando ==.
ResponderExcluirEXEMPLO:
:loginuser
set loginuser=
set loginpassword=
cls
set /p loginuser=Username:& set /p loginpassword=Password:
if "%loginuser%" == "","%loginpassword%" == "" (echo Do Not Leave The Username And Password Blank & pause >nul & goto loginuser)