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 sintaxis siguiente:
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 se debe llevar a cabo solo si la condición es false. |
errorlevel <number> |
Especifica una condición true solo si el programa anterior ejecutado por Cmd.exe devolvió un código de salida igual o mayor que número. |
<command> |
Especifica el comando que se debe llevar a cabo si se cumple la condición anterior. |
<string1>==<string2> |
Especifica una condición true 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:
|
/i | Obliga a las comparaciones de cadenas a omitir mayúsculas y minúsculas. Puede usar /i en el formulario de string1==string2 de si. Estas comparaciones son genéricas, en que si tanto cadena1 como cadena2 se componen 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 cmdextversion condicional nunca es true cuando las extensiones de comando están deshabilitadas (de forma predeterminada, las extensiones de comandos están habilitadas). |
<variable> definidas |
Especifica una condición verdadera si se define 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 de. |
/? | Muestra ayuda en el símbolo del sistema. |
Observaciones
Si la condición especificada en un si cláusula es true, se lleva a cabo el comando que sigue a la condición. Si la condición es false, el comando del si se omite cláusula y el comando ejecuta cualquier comando especificado en la cláusula else.
Cuando se detiene un programa, devuelve un código de salida. Para usar códigos de salida como condiciones, use el parámetro errorlevel.
Si usa definido, 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 lo 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 mediante Cmd.exe. Esto supone que aún no hay una variable de entorno existente con el nombre CMDCMDLINE. Si lo hay, obtendrá ese valor CMDCMDLINE en su lugar.
%cmdextversion%: se expande en la representación de cadena del valor actual de cmdextversion. Esto supone que aún no hay una variable de entorno existente con el nombre CMDEXTVERSION. Si lo hay, obtendrá ese valor CMDEXTVERSION en su lugar.
Debe usar la cláusula en la misma línea que el comando después del si.
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 líneas siguientes 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 eco del valor de la variable de entorno ERRORLEVEL después de ejecutar un archivo por lotes, escriba las líneas siguientes 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