if - Ramificación condicional
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
)
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
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.
| Operador | Significado | Ejemplo |
|---|---|---|
EQU | Igual a | IF %A% EQU 10 |
NEQ | No igual a | IF %A% NEQ 0 |
LSS | Menor que | IF %A% LSS 100 |
LEQ | Menor o igual que | IF %A% LEQ 100 |
GTR | Mayor que | IF %A% GTR 0 |
GEQ | Mayor o igual que | IF %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

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

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

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

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門
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
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
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
)
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ón | Sintaxis |
|---|---|
| Comparación de cadenas | IF "%A%"=="%B%" |
| Sin distinción de mayúsculas | IF /I "%A%"=="%B%" |
| Comparación numérica | IF %A% EQU %B% |
| Existe archivo | IF EXIST "ruta" |
| Variable definida | IF DEFINED nombrevar |
| Nivel de error | IF %ERRORLEVEL% EQU 0 |
| Negación | IF NOT condición |
Dominar el comando IF te dará mucha más flexibilidad y control sobre tus archivos por lotes.