Actualizado: 26 de febrero de 2026.
Este tutorial esta pensado para que un alumno de 1 de ASIR pueda resolver el ejercicio sin perderse, incluso si es la primera vez que toca scripts.
Objetivo final del ejercicio: pedir un nombre, crear una carpeta con ese nombre, generar
doc1.logadoc5.log, y renombrar todo a.txtde una sola vez.
Prerrequisitos
- Un equipo con Windows 10 u 11 para ejecutar el
.bat. - Acceso a
Bloc de notasy aSímbolo del sistema (CMD). - Saber abrir una carpeta en el explorador de archivos.
- Para equivalencias:
- Bash en Linux/macOS (o Git Bash en Windows).
- PowerShell 5.1+ o PowerShell 7+.
Qué vas a aprender
- Como crear un script
.batdesde cero. - Como pedir datos al usuario con
set /p. - Como crear carpetas y archivos vacios por comandos.
- Como renombrar archivos por extension en lote.
- Como mejorar un script basico con validaciones reales.
- Como llevar el mismo ejercicio a Bash y PowerShell.
Enunciado del ejercicio (explicado fácil)
El ejercicio te pide un script que haga exactamente esto:
- Preguntar al usuario su nombre.
- Crear una carpeta con ese nombre.
- Entrar en esa carpeta.
- Crear 5 archivos vacios:
doc1.log,doc2.log,doc3.log,doc4.log,doc5.log. - Cambiar todos esos archivos de
.loga.txten un solo comando.
Contrato funcional esperado:
- Entrada por teclado: nombre de usuario.
- Salida en disco: una carpeta con ese nombre y 5 archivos
doc1.txtadoc5.txt. - Si el usuario no escribe nombre, la version mejorada debe pedirlo otra vez.
- Si la carpeta ya existe, la version mejorada debe avisar y pedir otro nombre.
Solución mínima oficial en Batch (.bat)
Esta es la solucion minima clasica, fiel al enunciado:
@echo off
echo ==========================
echo LA MISION IMPOSIBLE :)
echo ==========================
REM 1) Preguntar nombre
set /p nombre=Escribe tu nombre y pulsa Enter:
REM 2) Crear carpeta con ese nombre
mkdir "%nombre%"
REM 3) Entrar en la carpeta
cd "%nombre%"
REM 4) Crear 5 archivos vacios doc1.log ... doc5.log
type nul > doc1.log
type nul > doc2.log
type nul > doc3.log
type nul > doc4.log
type nul > doc5.log
REM 5) Cambiar extension .log a .txt de un golpe
ren *.log *.txt
echo.
echo Listo! Se creo la carpeta y los archivos.
pause
Resultado esperado (ejemplo):
LA MISION IMPOSIBLE :)
Escribe tu nombre y pulsa Enter: Carlos
Listo! Se creo la carpeta y los archivos.
Presione una tecla para continuar . . .
Explicación línea por línea (ultra básica)
@echo off: evita que se impriman todos los comandos en pantalla.set /p nombre=...: muestra un texto y guarda lo que escriba el usuario en la variablenombre.mkdir "%nombre%": crea una carpeta. Las comillas permiten nombres con espacios (Ana Maria).cd "%nombre%": entra en la carpeta que acabas de crear.type nul > doc1.log: crea un archivo vacio.- Repetimos esa linea hasta
doc5.log. ren *.log *.txt: renombra todos los archivos.loga.txten bloque.pause: deja la ventana abierta para ver el resultado.
Que significa *.log:
*= “cualquier nombre”..log= “que termine en .log”.- En conjunto: “todos los archivos que acaben en .log”.
Versión mejorada de Batch (validaciones + bucles)
La siguiente version mantiene el ejercicio original, pero evita errores comunes:
- No acepta nombre vacio.
- Si la carpeta ya existe, pide otro nombre.
- Genera los 5 archivos con bucle (menos repeticion).
- Muestra un listado final para comprobar resultado.
Este es el contenido recomendado para mision.bat (el archivo real de esta carpeta):
@echo off
setlocal EnableExtensions
echo ==========================
echo LA MISION IMPOSIBLE :)
echo ==========================
echo.
:pedir_nombre
set "nombre="
set /p "nombre=Escribe tu nombre y pulsa Enter: "
if "%nombre%"=="" (
echo [ERROR] Debes escribir un nombre.
echo.
goto pedir_nombre
)
if exist "%nombre%\\" (
echo [ERROR] Ya existe la carpeta "%nombre%".
echo Escribe otro nombre para no mezclar archivos.
echo.
goto pedir_nombre
)
mkdir "%nombre%" || (
echo [ERROR] No se pudo crear la carpeta.
pause
exit /b 1
)
cd /d "%nombre%" || (
echo [ERROR] No se pudo entrar en la carpeta.
pause
exit /b 1
)
for /L %%i in (1,1,5) do (
type nul > "doc%%i.log"
)
ren *.log *.txt 2>nul
if exist "doc5.txt" (
echo.
echo OK: se crearon y renombraron los 5 archivos.
) else (
echo [ERROR] No se pudo completar el renombrado.
pause
exit /b 1
)
echo.
echo Archivos finales:
dir /b
echo.
pause
exit /b 0
Salida esperada de la version mejorada (ejemplo):
==========================
LA MISION IMPOSIBLE :)
==========================
Escribe tu nombre y pulsa Enter: Ana Maria
OK: se crearon y renombraron los 5 archivos.
Archivos finales:
doc1.txt
doc2.txt
doc3.txt
doc4.txt
doc5.txt
Pasos de ejecución en Windows 10/11 (CMD)
- Abre
Bloc de notas. - Copia el codigo de la version mejorada.
- Guarda como
mision.bat. - Muy importante:
- En tipo de archivo, selecciona
Todos los archivos. - No lo guardes como
mision.bat.txt. - Abre
CMDen esa carpeta. - Ejecuta:
mision.bat
Comprobacion manual:
- Escribe un nombre (ejemplo:
Carlos). - Entra en la carpeta creada.
- Confirma que existen exactamente:
doc1.txtdoc2.txtdoc3.txtdoc4.txtdoc5.txt
Comandos utiles de comprobacion en Windows:
cd Carlos
dir /b
Equivalencias: Bash y PowerShell
En esta carpeta tambien tienes las versiones listas:
Version Bash (mision.sh)
#!/usr/bin/env bash
set -euo pipefail
echo "=========================="
echo "LA MISION IMPOSIBLE :)"
echo "=========================="
echo
while true; do
read -r -p "Escribe tu nombre y pulsa Enter: " nombre
if [[ -z "${nombre// }" ]]; then
echo "[ERROR] Debes escribir un nombre."
echo
continue
fi
if [[ -e "$nombre" ]]; then
echo "[ERROR] Ya existe '$nombre'. Usa otro nombre."
echo
continue
fi
break
done
mkdir -- "$nombre"
cd -- "$nombre"
for i in {1..5}; do
: > "doc${i}.log"
done
for f in *.log; do
[[ -e "$f" ]] || { echo "[ERROR] No hay archivos .log para renombrar."; exit 1; }
mv -- "$f" "${f%.log}.txt"
done
echo
echo "OK: se crearon y renombraron los 5 archivos."
echo "Archivos finales:"
ls -1
Salida esperada (ejemplo):
Escribe tu nombre y pulsa Enter: Carlos
OK: se crearon y renombraron los 5 archivos.
Archivos finales:
doc1.txt
doc2.txt
doc3.txt
doc4.txt
doc5.txt
Version PowerShell (mision.ps1)
$ErrorActionPreference = "Stop"
Write-Host "=========================="
Write-Host "LA MISION IMPOSIBLE :)"
Write-Host "=========================="
Write-Host ""
while ($true) {
$nombre = Read-Host "Escribe tu nombre y pulsa Enter"
if ([string]::IsNullOrWhiteSpace($nombre)) {
Write-Host "[ERROR] Debes escribir un nombre."
Write-Host ""
continue
}
if (Test-Path -LiteralPath $nombre) {
Write-Host "[ERROR] Ya existe '$nombre'. Usa otro nombre."
Write-Host ""
continue
}
break
}
New-Item -ItemType Directory -Path $nombre | Out-Null
Set-Location -Path $nombre
1..5 | ForEach-Object {
New-Item -ItemType File -Path ("doc{0}.log" -f $_) | Out-Null
}
Get-ChildItem -Filter "*.log" | Rename-Item -NewName { $_.Name -replace '\.log$', '.txt' }
$txtCount = (Get-ChildItem -Filter "*.txt").Count
if ($txtCount -ne 5) {
throw "No se pudieron generar los 5 archivos .txt"
}
Write-Host ""
Write-Host "OK: se crearon y renombraron los 5 archivos."
Write-Host "Archivos finales:"
Get-ChildItem -Name
Salida esperada (ejemplo):
Escribe tu nombre y pulsa Enter: Ana Maria
OK: se crearon y renombraron los 5 archivos.
Archivos finales:
doc1.txt
doc2.txt
doc3.txt
doc4.txt
doc5.txt
Retos extra guiados
Reto 1: Cambia los nombres para crear informe1.log … informe5.log.
Reto 2: Crea 10 archivos en vez de 5.
Reto 3: Pide al usuario cuantos archivos quiere crear y usa ese numero.
Reto 4: Antes de renombrar, muestra cuantos .log existen.
Reto 5: Al final, escribe un resumen.txt con fecha y nombre del alumno.
Pista guiada para reto 3 en Batch:
set /p "cantidad=Cuantos archivos quieres crear: "
for /L %%i in (1,1,%cantidad%) do type nul > "doc%%i.log"
Checklist final de verificación
Checklist editorial:
- El tutorial tiene un unico H1.
- Incluye bloque SEO completo.
- Incluye
Fuente verificada. - Incluye equivalencias Bash y PowerShell.
Checklist funcional (manual):
- Caso feliz:
- Entrada:
Carlos - Resultado: carpeta
Carloscondoc1.txt…doc5.txt. - Caso con espacios:
- Entrada:
Ana Maria - Resultado: carpeta
Ana Mariacon 5.txt. - Caso vacio:
- Entrada: solo Enter.
- Resultado: mensaje de error y nueva peticion de nombre.
- Caso carpeta existente:
- Entrada: nombre ya usado.
- Resultado: mensaje de error y nueva peticion.
- Caso re-ejecucion:
- Ejecutar otra vez con nombre diferente.
- Resultado: no mezcla archivos entre carpetas.
Troubleshooting
- Problema: se guarda como
mision.bat.txt. - Solucion: en Bloc de notas usa
Tipo: Todos los archivos. - Problema:
Acceso denegado. - Solucion: ejecuta en una carpeta donde tengas permisos de escritura (por ejemplo tu Escritorio).
- Problema: no se renombra nada con
ren *.log *.txt. - Solucion: comprueba que los archivos realmente terminan en
.log. - Problema: PowerShell bloquea scripts.
- Solucion:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
- Problema: Bash no ejecuta
mision.sh. - Solucion:
chmod +x mision.sh
./mision.sh
FAQ corta
Esta solucion sirve para examen?
Si. Primero estudia la solucion minima, luego usa la mejorada para demostrar dominio tecnico.
Por que usamos comillas en rutas?
Para soportar nombres con espacios, como Ana Maria.
Puedo cambiar doc por otro prefijo?
Si, mientras mantengas la logica de crear y renombrar.
Es obligatorio saber Bash y PowerShell para este ejercicio?
No. El ejercicio de clase es Batch, pero las equivalencias te ayudan a entender automatizacion real.
Share this content: