Skip to main content

Scripts por lotes en Windows (Batch)

Los archivos Batch, también conocidos como scripts por lotes, son una forma de automatizar tareas en el sistema operativo Windows mediante la ejecución secuencial de comandos a través de un archivo con extensión .bat o .cmd.


¿Qué es un archivo Batch?

Un archivo Batch contiene una lista de comandos de línea de comandos (CMD) que se ejecutan en orden. Se utilizan comúnmente para automatizar tareas repetitivas, como compilar código, mover archivos, configurar entornos, lanzar programas, entre otros.

Estos scripts se ejecutan en el intérprete de comandos de Windows (cmd.exe).


Sintaxis básica

Ejemplo de un script básico:

@echo off
echo Hola, este es un script por lotes.
pause

Ejemplo real: Script de compilación de DariOS

Durante el desarrollo de DariOS, utilicé el siguiente script por lotes para automatizar la compilación del sistema operativo. El script ensambla tanto el bootloader como el kernel, y luego genera la imagen final del sistema (so.img) concatenando ambos binarios.

@echo off
setlocal

:: 🔧 COMPILAR BOOTLOADER
nasm -f bin bootloader.asm -o bootloader.bin
if errorlevel 1 goto error

:: 🧠 COMPILAR KERNEL
nasm -f bin kernel.asm -o kernel.bin
if errorlevel 1 goto error

:: 🧱 GENERAR IMAGEN FINAL
copy /b bootloader.bin+kernel.bin so.img
if errorlevel 1 goto error

:: ✅ TODO CORRECTO
echo ===============================
echo ✅ Imagen so.img generada correctamente.
echo ===============================
pause
exit /b

:error
:: ❌ ERROR EN LA COMPILACIÓN
echo ❌ Error durante la compilación
pause
exit /b

Explicación de comandos Batch usados

@echo off

@echo off

Desactiva la visualización de los comandos en la consola para que la salida sea más limpia y solo se muestren los mensajes explícitos con echo.


setlocal

setlocal

Inicia un entorno local para las variables del script, evitando que los cambios afecten al entorno global o a otros scripts.


Comentarios (::)

:: Esto es un comentario

Las líneas que comienzan con :: son comentarios y no se ejecutan. Sirven para documentar y explicar partes del script.


if errorlevel 1 goto etiqueta

if errorlevel 1 goto error

Comprueba el valor de errorlevel, que es el código de salida del último comando ejecutado.
Si el valor es 1 o mayor (indica error), salta a la etiqueta especificada (por ejemplo, :error).


echo texto

echo Imagen generada correctamente.

Muestra el texto especificado en la consola.


pause

pause

Pausa la ejecución del script y muestra un mensaje para que el usuario presione una tecla para continuar.


exit /b [código]

exit /b
exit /b 1

Finaliza la ejecución del script batch y devuelve opcionalmente un código de salida (código), que puede usarse para indicar éxito (0) o error (1 o mayor).