if

Realiza el procesamiento condicional en programas por lotes.

Sintaxis

if [not] ERRORLEVEL <number> <command> [else <expression>]
if [not] <string1>==<string2> <command> [else <expression>]
if [not] exist <filename> <command> [else <expression>]

Si las extensiones de comandos están habilitadas, use la siguiente sintaxis:

if [/i] <string1> <compareop> <string2> <command> [else <expression>]
if cmdextversion <number> <command> [else <expression>]
if defined <variable> <command> [else <expression>]

Parámetros

Parámetro Descripción
not Especifica que el comando solo se debe llevar a cabo si la condición es falsa.
errorlevel <number> Especifica una condición verdadera solo si el programa anterior ejecutado por Cmd.exe devolvió un código de salida igual o mayor que number.
<command> Especifica el comando que se debe llevar a cabo si se cumple la condición anterior.
<string1>==<string2> Especifica una condición verdadera solo si string1 y string2 son iguales. Estos valores pueden ser cadenas literales o variables por lotes (por ejemplo, %1). No es necesario incluir cadenas literales entre comillas.
exist <filename> Especifica una condición verdadera si existe el nombre de archivo especificado.
<compareop> Especifica un operador de comparación de tres letras, entre los que se incluyen:
  • EQU: igual a
  • NEQ: no es igual a
  • LSS: menor que
  • LEQ: menor o igual que
  • GTR: mayor que
  • GEQ: mayor o igual que
/i Obliga a las comparaciones de cadenas a omitir mayúsculas y minúsculas. Puede usar /i en forma de string1==string2 de if. Estas comparaciones son genéricas, de modo que si string1 y string2 están compuestas solo de dígitos numéricos, las cadenas se convierten en números y se realiza una comparación numérica.
cmdextversion <number> Especifica una condición verdadera solo si el número de versión interno asociado a la característica de extensiones de comandos de Cmd.exe es igual o mayor que el número especificado. La primera versión es 1. Aumenta por incrementos de uno cuando se agregan mejoras significativas a las extensiones de comando. El condicional cmdextversion nunca es verdadero cuando las extensiones de comando están deshabilitadas (de forma predeterminada, las extensiones de comandos están habilitadas).
defined <variable> Especifica una condición verdadera si se define una variable.
<expression> Especifica un comando de línea de comandos y los parámetros que se van a pasar al comando en una cláusula else.
/? Muestra la ayuda en el símbolo del sistema.

Comentarios

  • Si la condición especificada en una cláusula if es true, se lleva a cabo el comando que sigue a la condición. Si la condición es falsa, el comando de la cláusula if se omite y el comando ejecuta cualquier comando especificado en la cláusula else.

  • Cuando un programa se detiene, devuelve un código de salida. Para usar códigos de salida como condiciones, use el parámetro errorlevel.

  • Si usa defined, se agregan las tres variables siguientes al entorno: %errorlevel%, %cmdcmdline% y %cmdextversion%.

    • %errorlevel%: se expande en una representación de cadena del valor actual de la variable de entorno ERRORLEVEL. Esta variable supone que aún no hay una variable de entorno existente con el nombre ERRORLEVEL. Si la hay, obtendrá ese valor ERRORLEVEL en su lugar.

    • %cmdcmdline%: se expande a la línea de comandos original que se pasó a Cmd.exe antes de cualquier procesamiento por Cmd.exe. Se supone que aún no hay una variable de entorno existente con el nombre CMDCMDLINE. Si la hay, obtendrá ese valor CMDCMDLINE en su lugar.

    • %cmdextversion%: se expande en la representación de cadena del valor actual de cmdextversion. Se supone que aún no hay una variable de entorno existente con el nombre CMDEXTVERSION. Si la hay, obtendrá ese valor CMDEXTVERSION en su lugar.

  • Debe usar la cláusula else en la misma línea que el comando después de if.

Ejemplos

Para mostrar el mensaje No se encuentra el archivo de datos si no se encuentra el archivo Product.dat, escriba:

if not exist product.dat echo Cannot find data file

Para dar formato a un disco en la unidad A y mostrar un mensaje de error si se produce un error durante el proceso de formato, escriba las siguientes líneas en un archivo por lotes:

:begin
@echo off
format a: /s
if not errorlevel 1 goto end
echo An error occurred during formatting.
:end
echo End of batch program.

Para eliminar el archivo Product.dat del directorio actual o mostrar un mensaje si no se encuentra Product.dat, escriba las siguientes líneas en un archivo por lotes:

IF EXIST Product.dat (
del Product.dat
) ELSE (
echo The Product.dat file is missing.
)

Nota

Estas líneas se pueden combinar en una sola línea de la siguiente manera:

IF EXIST Product.dat (del Product.dat) ELSE (echo The Product.dat file is missing.)

Para reproducir el valor de la variable de entorno ERRORLEVEL después de ejecutar un archivo por lotes, escriba las siguientes líneas en el archivo por lotes:

goto answer%errorlevel%
:answer1
echo The program returned error level 1
goto end
:answer0
echo The program returned error level 0
goto end
:end
echo Done!

Para ir a la etiqueta ok si el valor de la variable de entorno ERRORLEVEL es menor o igual que 1, escriba:

if %errorlevel% LEQ 1 goto okay