Warum Swift mehr kann als nur Apps
\n\nWenn du „Swift“ hörst, denkst du wahrscheinlich an iOS-Entwicklung, Xcode, Storyboards und endlose Constraints. Aber Swift hat noch eine andere Seite, die viele nicht kennen. Swift ist ein mächtiges Werkzeug für die Aufgabenautomatisierung unter macOS. Und damit meine ich nicht das Kompilieren von Apps, sondern alltägliche Dinge: Hunderte Dateien umbenennen, einen CSV-Bericht parsen, um 18:00 Uhr eine Benachrichtigung senden oder Server-Logs sammeln.
\n\nWarum Swift und nicht Python oder Bash? Weil Swift:
\n- \n
- nativ mit macOS arbeitet (Zugriff auf
Foundation,Dispatch,UserNotifications); \n - keine virtuelle Umgebung oder Abhängigkeiten benötigt (wenn du SPM vermeidest); \n
- klare Kompilierungsfehler liefert – du verschwendest keine Stunde mit der Suche nach einem fehlenden Leerzeichen wie in Bash; \n
- als Skript mit einem Befehl ausgeführt werden kann:
swift myScript.swift. \n
In diesem Artikel zeige ich dir mehrere praktische Automatisierungsszenarien mit Swift. Du kannst den Code kopieren, bei dir ausführen und vor allem verstehen, wie du deine eigenen Tools schreibst. Los geht's!
\n\nWie ein Swift-Skript funktioniert: Minimale Theorie
\n\nUm eine Automatisierung mit Swift zu schreiben, brauchst du kein Xcode. Ein Terminal und ein Texteditor reichen völlig aus. Erstelle eine Datei script.swift und führe sie mit folgendem Befehl aus:
swift script.swift\n\nSwift kompiliert und führt den Code automatisch aus. Bei größeren Skripten kannst du für schnellere Wiederholungen vorkompilieren: swiftc -O script.swift -o script und dann die Binärdatei ausführen.
Alles, was wir jetzt schreiben, funktioniert sofort – ohne externe Bibliotheken. Nur Foundation, das automatisch eingebunden wird.
Szenario #1: Stapelweises Umbenennen von Dateien
\n\nStell dir vor: Du hast einen Ordner mit Fotos IMG_001.jpg, IMG_002.jpg … IMG_100.jpg. Du möchtest sie in Urlaub_1.jpg, Urlaub_2.jpg usw. umbenennen. Von Hand – 100 Schritte. Mit einem Skript – 0,5 Sekunden.
import Foundation\n\nlet fileManager = FileManager.default\nlet currentPath = fileManager.currentDirectoryPath\n\nguard let files = try? fileManager.contentsOfDirectory(atPath: currentPath) else {\n print("Konnte Ordner nicht lesen")\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 = "Urlaub_\\(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("❌ Fehler bei Datei \\(file): \\(error.localizedDescription)")\n }\n}\n\nSo funktioniert's:
\n- \n
FileManager.default– Zugriff auf das Dateisystem; \n contentsOfDirectory– Liste der Dateien im aktuellen Ordner abrufen; \n - Nur Bilder filtern; \n
- Umbenennen mit
moveItem(ja, in Swift ist Umbenennen ein Verschieben). \n
Du kannst das Skript leicht anpassen: Präfix ändern, Dateiendungen erweitern oder ein Datum in den Namen einfügen. Das ist ein nützliches Swift-Skript, das dir täglich Zeit spart.
\n\nExtra-Tipp: Datum als Suffix
\n\nlet 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 // ... weiter wie im Beispiel oben\n}\n\nSzenario #2: CSV-Datei parsen
\n\nCSV-Dateien sind der Klassiker der Büroarbeit. Ob Exporte aus Excel, Google Sheets oder SAP – oft musst du sie verarbeiten. Mit Swift kannst du das schnell und sauber erledigen.
\n\nimport Foundation\n\nlet csvContent = try String(contentsOfFile: "daten.csv", encoding: .utf8)\nlet rows = csvContent.components(separatedBy: "\\n")\n\nfor row in rows {\n let columns = row.components(separatedBy: \",\")\n guard columns.count >= 2 else { continue }\n let name = columns[0].trimmingCharacters(in: .whitespaces)\n let wert = columns[1].trimmingCharacters(in: .whitespaces)\n print("Name: \\(name), Wert: \\(wert)")\n}\n\nSo funktioniert's:
\n- \n
String(contentsOfFile:)– liest die gesamte Datei als String; \n components(separatedBy:)– teilt den String in Zeilen und Spalten; \n trimmingCharacters– entfernt überflüssige Leerzeichen. \n
Dieses Swift CSV-Parsing ist ideal für die Automatisierung von Datenauswertungen. Du kannst es leicht erweitern, um Werte zu summieren, zu filtern oder in eine neue Datei zu schreiben.
\n\nSzenario #3: Benachrichtigungen senden
\n\nManchmal möchtest du informiert werden, wenn ein Skript fertig ist oder ein bestimmtes Ereignis eintritt. Mit UserNotifications kannst du lokale Benachrichtigungen direkt vom Terminal aus senden.
import UserNotifications\n\nlet center = UNUserNotificationCenter.current()\ncenter.requestAuthorization(options: [.alert, .sound]) { granted, error in\n guard granted else {\n print("Benachrichtigungen nicht erlaubt")\n exit(1)\n }\n \n let content = UNMutableNotificationContent()\n content.title = "Swift Automatisierung"\n content.body = "Dein Skript wurde erfolgreich ausgeführt!"\n content.sound = .default\n \n let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false)\n let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)\n \n center.add(request) { error in\n if let error = error {\n print("Fehler: \\(error.localizedDescription)")\n } else {\n print("✅ Benachrichtigung gesendet")\n }\n }\n}\n\ndispatchMain()\n\nSo funktioniert's:
\n- \n
requestAuthorization– Berechtigung für Benachrichtigungen anfordern; \n UNMutableNotificationContent– Inhalt der Benachrichtigung festlegen; \n UNTimeIntervalNotificationTrigger– Verzögerung von 1 Sekunde; \n dispatchMain()– hält das Skript am Leben, bis die Benachrichtigung gesendet wurde. \n
Diese Swift Benachrichtigungen sind perfekt, um dich an Termine zu erinnern oder den Abschluss langer Aufgaben zu melden.
\n\nFazit: Swift als Geheimwaffe für deinen Mac
\n\nSwift ist nicht nur für iOS-Apps da. Mit ein paar Zeilen Code kannst du alltägliche Aufgaben automatisieren und dir Stunden an manueller Arbeit sparen. Ob Dateien umbenennen, CSV parsen oder Benachrichtigungen senden – Swift macht es einfach und zuverlässig.
\n\nProbiere die Skripte selbst aus und passe sie an deine Bedürfnisse an. Du wirst sehen: Sobald du einmal anfängst, wirst du immer mehr Swift Automatisierungen für deinen Mac entdecken. Viel Erfolg!