Automação de tarefas com Swift: do tédio à magia em um comando

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Por que Swift não é só para aplicativos

\n\n

Quando você ouve "Swift", a primeira coisa que vem à mente é desenvolvimento iOS, Xcode, storyboards e constraints infinitas. Mas existe um outro lado dessa linguagem que poucos conhecem. Swift é uma ferramenta poderosa para automação de tarefas no macOS. E não estou falando de compilar aplicativos, mas de coisas do dia a dia: renomear centenas de arquivos, analisar um relatório CSV, enviar uma notificação às 18h ou coletar logs do servidor.

\n\n

Por que Swift em vez de Python ou Bash? Porque Swift:

\n
    \n
  • funciona nativamente com o macOS (acesso a Foundation, Dispatch, UserNotifications);
  • \n
  • não requer ambiente virtual ou dependências (a menos que você use SPM);
  • \n
  • fornece erros de compilação claros — você não vai perder horas procurando um espaço extra, como no Bash;
  • \n
  • pode ser executado como script com um único comando: swift myScript.swift.
  • \n
\n\n

Neste artigo, vou mostrar alguns cenários reais de automação com Swift. Você pode copiar o código, executá-lo na sua máquina e, o mais importante, aprender a criar suas próprias utilidades. Vamos nessa!

\n\n

Como funciona um script Swift: o mínimo de teoria

\n\n

Para escrever uma automação em Swift, você não precisa do Xcode. Apenas do Terminal e de um editor de texto. Crie um arquivo script.swift e execute-o com o comando:

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

O próprio Swift compila e executa o código. Se o script for grande e você quiser acelerar execuções futuras, pode compilá-lo previamente: swiftc -O script.swift -o script e executar o binário diretamente.

\n\n

Tudo o que vamos escrever daqui em diante funciona de fábrica — sem bibliotecas externas. Apenas o Foundation, que é importado automaticamente.

\n\n

Cenário #1: Renomear arquivos em lote

\n\n

Imagine: você tem uma pasta com fotos IMG_001.jpg, IMG_002.jpg … IMG_100.jpg. Você quer renomeá-las para Ferias_1.jpg, Ferias_2.jpg e assim por diante. Manualmente, seriam 100 operações. Com um script, 0,5 segundo.

\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("Não foi possível ler a pasta")\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 = "Ferias_\\(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("❌ Erro com o arquivo \\(file): \\(error.localizedDescription)")\n    }\n}
\n\n

Como funciona:

\n
    \n
  • FileManager.default — acesso ao sistema de arquivos;
  • \n
  • contentsOfDirectory — obtém a lista de arquivos na pasta atual;
  • \n
  • filtra apenas as imagens;
  • \n
  • renomeia usando moveItem (sim, em Swift, renomear é um movimento).
  • \n
\n\n

Você pode adaptar facilmente o script: mudar o prefixo, as extensões, adicionar a data ao nome. Isso já é um script Swift útil que economiza tempo todos os dias.

\n\n

Extra: sufixo com data

\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    // ... continue como no exemplo acima\n}
\n\n

Cenário #2: Pars

Blogs

Book Recommendations