Automatización de tareas en Swift: del aburrimiento a la magia de un solo comando

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Por qué Swift no es solo para aplicaciones

\n\n

Cuando escuchas «Swift», la primera asociación es desarrollo iOS, Xcode, storyboards y restricciones infinitas. Pero hay otro lado de este lenguaje que no todos conocen. Swift es una herramienta poderosa para la automatización de tareas en macOS. Y no me refiero a compilar aplicaciones, sino a cosas cotidianas y comunes: renombrar cien archivos, analizar un informe CSV, enviar una notificación a las 18:00 o recopilar registros del servidor.

\n\n

¿Por qué Swift y no Python o Bash? Porque Swift:

\n
    \n
  • funciona de forma nativa con macOS (acceso a Foundation, Dispatch, UserNotifications);
  • \n
  • no requiere entornos virtuales ni dependencias (si no usas SPM);
  • \n
  • proporciona errores de compilación claros: no perderás una hora buscando un espacio extra, como en Bash;
  • \n
  • se puede ejecutar como script con una sola línea: swift myScript.swift.
  • \n
\n\n

En este artículo, te mostraré varios escenarios reales de automatización con Swift. Podrás copiar el código, ejecutarlo en tu máquina y, lo más importante, entender cómo escribir tus propias utilidades. ¡Vamos allá!

\n\n

Cómo funciona un script de Swift: mínimo de teoría

\n\n

Para escribir una automatización en Swift, no necesitas Xcode. Solo necesitas la terminal y cualquier editor de texto. Crea un archivo script.swift y ejecútalo con el comando:

\n\n
swift script.swift
\n\n

Swift compilará y ejecutará el código automáticamente. Si el script es grande y quieres acelerar ejecuciones posteriores, puedes compilarlo previamente: swiftc -O script.swift -o script y luego ejecutar el binario.

\n\n

Todo lo que escribiremos a continuación funciona de fábrica, sin bibliotecas externas. Solo Foundation, que se importa automáticamente.

\n\n

Escenario n.º 1: Renombrar archivos por lotes

\n\n

Imagina: tienes una carpeta con fotos IMG_001.jpg, IMG_002.jpg … IMG_100.jpg. Quieres renombrarlas a Vacation_1.jpg, Vacation_2.jpg y así sucesivamente. A mano: 100 operaciones. Con un script: 0.5 segundos.

\n\n
import Foundation\n\nlet fileManager = FileManager.default\nlet currentPath = fileManager.currentDirectoryPath\n\nguard let files = try? fileManager.contentsOfDirectory(atPath: currentPath) else {\n    print("No se pudo leer la carpeta")\n    exit(1)\n}\n\nlet imageFiles = files.filter { $0.hasSuffix(".jpg") || $0.hasSuffix(".png") }\n\nfor (index, file) in imageFiles.enumerated() {\n    let newName = "Vacation_\\(index + 1)." + (file.hasSuffix(".jpg") ? "jpg" : "png")\n    let oldURL = URL(fileURLWithPath: currentPath).appendingPathComponent(file)\n    let newURL = URL(fileURLWithPath: currentPath).appendingPathComponent(newName)\n    \n    do {\n        try fileManager.moveItem(at: oldURL, to: newURL)\n        print("✅ \\(file) → \\(newName)")\n    } catch {\n        print("❌ Error con el archivo \\(file): \\(error.localizedDescription)")\n    }\n}
\n\n

Cómo funciona:

\n
    \n
  • FileManager.default — acceso al sistema de archivos;
  • \n
  • contentsOfDirectory — obtenemos la lista de archivos en la carpeta actual;
  • \n
  • filtramos solo las imágenes;
  • \n
  • renombramos usando moveItem (sí, en Swift renombrar es mover).
  • \n
\n\n

Puedes adaptar fácilmente el script: cambiar el prefijo, las extensiones, añadir la fecha al nombre. Este es ya un script útil de Swift que ahorra tiempo cada día.

\n\n

Característica adicional: sufijo con fecha

\n\n
let dateFormatter = DateFormatter()\ndateFormatter.dateFormat = "yyyy-MM-dd"\nlet dateString = dateFormatter.string(from: Date())\n\nfor (index, file) in imageFiles.enumerated() {\n    let newName = "\\(dateString)_\\(index + 1).jpg"\n    // ... luego como en el ejemplo anterior\n}
\n\n

Escenario n.º 2: Aná

Blogs

Book Recommendations