if - Ramificación condicional

Mantenido el

Al crear archivos por lotes, las situaciones en las que necesitas “dividir el procesamiento según una condición” son muy frecuentes.

Por ejemplo: ejecutar una copia solo cuando existe un archivo, o continuar al siguiente paso solo si el comando anterior tuvo éxito.

El comando IF es el que hace posible esta ramificación condicional.

Este artículo explica el comando IF desde los conceptos básicos hasta el uso avanzado, con ejemplos de código prácticos.

Sintaxis básica del comando IF

La sintaxis básica del comando IF es la siguiente.

IF condición (
    rem Comandos a ejecutar cuando la condición es verdadera
)

Para también manejar el caso falso, añade una cláusula ELSE.

IF condición (
    rem Comandos para el caso verdadero
) ELSE (
    rem Comandos para el caso falso
)
Nota de sintaxis

ELSE debe escribirse en la misma línea que el paréntesis de cierre anterior ). Si se escribe ELSE en una nueva línea, no funcionará correctamente.

Comparar cadenas de texto

Para comprobar si dos cadenas son iguales, usa el operador ==.

IF "%variable%"=="cadena a comparar" (
    rem Comandos cuando coinciden
)
チェック

Se recomienda encerrar los valores entre comillas dobles. Esto evita errores de sintaxis cuando una variable está vacía.

Ejemplo

Ramificación basada en la entrada del usuario.

@echo off
setlocal

set /p ANSWER=¿Continuar? (S/N):

IF "%ANSWER%"=="S" (
    echo Continuando el proceso.
) ELSE (
    echo Proceso cancelado.
)

endlocal
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>string_compare.cmd
¿Continuar? (S/N): S
Continuando el proceso.
C:\users\user>

Comparación sin distinción de mayúsculas

Usa la opción /I para comparar cadenas sin tener en cuenta las mayúsculas y minúsculas.

IF /I "%ANSWER%"=="s" (
    echo Continuando el proceso.
)

Con esto, tanto S como s coincidirán.

Comparar números

Para comparaciones numéricas, usa estos operadores dedicados.

OperadorSignificadoEjemplo
EQUIgual aIF %A% EQU 10
NEQNo igual aIF %A% NEQ 0
LSSMenor queIF %A% LSS 100
LEQMenor o igual queIF %A% LEQ 100
GTRMayor queIF %A% GTR 0
GEQMayor o igual queIF %A% GEQ 1

Ejemplo

@echo off
setlocal

set /a NUM=75

IF %NUM% GEQ 80 (
    echo Aprobado con distinción
) ELSE IF %NUM% GEQ 60 (
    echo Aprobado
) ELSE (
    echo Reprobado
)

endlocal
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>number_compare.cmd
Aprobado
C:\users\user>
おすすめ書籍※ 広告を含む場合があります
中小企業経営者のためのRPA入門 RPA導入を成功させる方法

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超入門

60分でわかる! AIエージェント 超入門

コマンドラインの黒い画面が怖いんです。

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

Sobre ELSE IF encadenado

Como se muestra arriba, encadenar sentencias ELSE IF permite evaluar múltiples condiciones en orden. Solo se ejecuta el primer bloque cuya condición sea verdadera.

Comprobar si existe un archivo o carpeta

IF EXIST comprueba si existe un archivo o carpeta especificado.

IF EXIST "ruta" (
    rem Comandos si existe
)

Ejemplo

@echo off
setlocal

IF EXIST "C:\Users\usuario\Documentos\informe.txt" (
    echo Archivo encontrado.
) ELSE (
    echo El archivo no existe.
)

endlocal
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>check_file.cmd
Archivo encontrado.
C:\users\user>

Comprobar la existencia de una carpeta

Para comprobar específicamente una carpeta, añade \ al final de la ruta o usa NUL.

IF EXIST "C:\Users\usuario\Documentos\" (
    echo La carpeta existe.
)

Comprobar si una variable está definida

IF DEFINED comprueba si una variable ha sido configurada.

IF DEFINED nombrevariable (
    rem Comandos cuando la variable está definida
)

Ejemplo

@echo off
setlocal

set MI_VAR=Hola

IF DEFINED MI_VAR (
    echo MI_VAR está definida: %MI_VAR%
) ELSE (
    echo MI_VAR no está definida.
)

endlocal
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>check_defined.cmd
MI_VAR está definida: Hola
C:\users\user>

Comprobar ERRORLEVEL

Para verificar el código de salida del comando anterior, usa IF ERRORLEVEL o %ERRORLEVEL%.

IF ERRORLEVEL 1 (
    rem Comandos cuando el código de salida es 1 o mayor
)
Comportamiento de ERRORLEVEL

IF ERRORLEVEL N es verdadero cuando ERRORLEVEL es N o mayor. Para comprobar un valor exacto, usa IF %ERRORLEVEL% EQU N.

Ejemplo

@echo off
setlocal

copy "origen.txt" "destino.txt" >nul 2>&1

IF %ERRORLEVEL% EQU 0 (
    echo Copia exitosa.
) ELSE (
    echo Error al copiar. Código de error: %ERRORLEVEL%
)

endlocal

Negar una condición con NOT

NOT invierte la condición.

IF NOT EXIST "backup\" (
    mkdir backup
    echo Carpeta backup creada.
)

IF NOT "%USERNAME%"=="admin" (
    echo No eres administrador.
)

IF NOT DEFINED CONFIG_PATH (
    set CONFIG_PATH=C:\default\config.ini
)

Combinar múltiples condiciones

Los archivos por lotes no tienen operadores AND u OR, pero las sentencias IF anidadas logran el mismo resultado.

Condición AND (ambas condiciones deben ser verdaderas)

IF EXIST "datos.txt" (
    IF %ERRORLEVEL% EQU 0 (
        echo Todas las condiciones se cumplen.
    )
)

Condición OR (cualquiera de las condiciones es verdadera)

set MATCH=0
IF "%INPUT%"=="A" set MATCH=1
IF "%INPUT%"=="B" set MATCH=1
IF %MATCH% EQU 1 (
    echo Se ingresó A o B.
)

Resumen

Este artículo explicó cómo usar el comando IF.

Tipo de condiciónSintaxis
Comparación de cadenasIF "%A%"=="%B%"
Sin distinción de mayúsculasIF /I "%A%"=="%B%"
Comparación numéricaIF %A% EQU %B%
Existe archivoIF EXIST "ruta"
Variable definidaIF DEFINED nombrevar
Nivel de errorIF %ERRORLEVEL% EQU 0
NegaciónIF NOT condición

Dominar el comando IF te dará mucha más flexibilidad y control sobre tus archivos por lotes.

Artículos relacionados

In preparation
La página vinculada está actualmente en construcción. Por favor, espere un momento.

Preguntas de práctica

Problema de práctica

Elige la descripción incorrecta sobre el comando IF.

回答がサーバーに送信されることはありません
#Símbolo del sistema #Archivo por lotes #IF #Condicional #Comando