Organizar el material académico o de proyectos al inicio de cada ciclo suele ser una tarea repetitiva. Crear manualmente carpetas para cada semana y, dentro de ellas, la misma estructura de subdirectorios consume un tiempo valioso que podemos automatizar fácilmente con un script en lotes (Batch/CMD) de Windows. En esta guía documentamos cómo estructurar un script robusto para generar automáticamente carpetas secuenciales del tipo S01 a S10 con sus respectivos subdirectorios internos.
1. El problema: Estructuras repetitivas hechas a mano
El objetivo es replicar de forma automatizada un esquema de directorios estandarizado para un curso académico de 10 semanas. Cada semana debe contener exactamente cuatro subcarpetas destinadas a guías, lecturas, bibliografía y asignaciones. Hacer esto de forma manual implica crear 50 carpetas individuales, un proceso propenso a errores de escritura y sumamente tedioso.
La estructura final requerida dentro del directorio del curso debe lucir de la siguiente manera:
Directorio de I:\My Drive\2026\2026C1\gestion_proyectos\S02
[DIR] 001-guia_didactica
[DIR] 002-lecturas-presentaciones
[DIR] 003-bibliografia
[DIR] 004-asignacion
2. El desafío técnico en Batch: Expansión de variables
Al intentar resolver esto con un bucle FOR tradicional en CMD, nos topamos con una limitación del intérprete de comandos de Windows: las variables dentro de un bloque de código (entre paréntesis) se evalúan una sola vez cuando se lee la instrucción, no en cada iteración del bucle. Esto impide que la variable que define el nombre de la semana se actualice dinámicamente si usamos la sintaxis estándar de %variable%.
%semana% dentro del bucle sin habilitar la expansión diferida, todas las subcarpetas se crearán bajo el mismo nombre o el script fallará al no reconocer el cambio de valor en cada iteración.
3. La solución recomendada: Script con expansión diferida
Para solucionar este comportamiento, debemos utilizar la directiva setlocal enabledelayedexpansion. Esto le indica a CMD que evalúe las variables en tiempo de ejecución utilizando signos de exclamación (!semana!) en lugar de porcentajes.
A continuación, se presenta el script optimizado y listo para producción:
@echo off
setlocal enabledelayedexpansion
:: Ruta base donde se creará la estructura
set "BASE=I:\My Drive\2026\2026C1\gestion_proyectos"
:: Bucle del 1 al 10
for /L %%i in (1,1,10) do (
:: Agregar cero a la izquierda para números menores a 10
if %%i LSS 10 (
set "semana=S0%%i"
) else (
set "semana=S%%i"
)
:: Creación de directorios usando expansión diferida (!)
mkdir "%BASE%\!semana!"
mkdir "%BASE%\!semana!\001-guia_didactica"
mkdir "%BASE%\!semana!\002-lecturas-presentaciones"
mkdir "%BASE%\!semana!\003-bibliografia"
mkdir "%BASE%\!semana!\004-asignacion"
)
echo Carpetas creadas correctamente.
pause
4. Versión avanzada y parametrizada
Si sueles realizar este proceso al inicio de cada semestre académico, es mucho más eficiente contar con un script parametrizado donde solo debas definir las variables principales al inicio del archivo, evitando modificar la lógica del bucle en el futuro.
@echo off
setlocal enabledelayedexpansion
:: CONFIGURACIÓN DE VARIABLES
set "BASE=I:\My Drive\2026\2026C1\gestion_proyectos"
set "PREFIJO=S"
set "TOTAL_SEMANAS=10"
:: Listado de subcarpetas separadas por espacios
set "SUBCARPETAS="001-guia_didactica" "002-lecturas-presentaciones" "003-bibliografia" "004-asignacion""
:: EJECUCIÓN DEL SCRIPT
for /L %%i in (1,1,%TOTAL_SEMANAS%) do (
if %%i LSS 10 (
set "semana=%PREFIJO%0%%i"
) else (
set "semana=%PREFIJO%%%i"
)
echo Creando: !semana!
mkdir "%BASE%\!semana!" 2>nul
for %%f in (%SUBCARPETAS%) do (
mkdir "%BASE%\!semana!\%%~f" 2>nul
)
)
echo Estructura completada con éxito.
pause
2>nul al final de los comandos mkdir evita que el script muestre mensajes de error molestos en la consola en caso de que alguna de las carpetas ya exista previamente.
5. Cómo ejecutar el script
- Abre el editor de texto de tu preferencia (por ejemplo, el Bloc de notas).
- Copia y pega el código de cualquiera de las versiones presentadas anteriormente.
- Modifica la variable
BASEcon la ruta exacta de tu directorio de trabajo. - Guarda el archivo con el nombre
crear_semanas.cmd(asegúrate de seleccionar "Todos los archivos (*.*)" en el tipo de archivo al guardar para evitar que se guarde como un archivo de texto plano.txt). - Haz doble clic sobre el archivo guardado para ejecutarlo.
La historia detrás de la nota
Automatizar estas pequeñas tareas administrativas no solo ahorra minutos valiosos cada inicio de semestre, sino que garantiza que la estructura de archivos compartida con los alumnos sea siempre consistente y prolija.