Automação de rotinas em C++: scripts que economizam horas

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

Seu C++ não é só para jogos e drivers

\n\n

Quando se fala em "C++", geralmente pensamos em artilharia pesada: engines Unreal, sistemas operacionais, servidores de alta carga. Mas existe um lado igualmente útil e muitas vezes esquecido: a automação de tarefas em C++. Enquanto seus colegas escrevem scripts Bash descartáveis ou sofrem com dependências do Python, você pode criar uma ferramenta compacta, rápida e que funciona por anos sem precisar atualizar o interpretador.

\n\n

Neste artigo, vou mostrar como transformar o C++ em um canivete suíço para automação. Vamos explorar exemplos reais: desde renomear arquivos em lote até analisar logs e gerar relatórios. Você verá que a automação de rotinas com C++ não é complicada, e sim muito vantajosa em termos de velocidade e confiabilidade.

\n\n

Por que C++ em vez de Python ou Bash?

\n\n

Cada linguagem tem seu lugar. Mas existem cenários onde o C++ se destaca:

\n\n
    \n
  • Velocidade de execução. Se você processa terabytes de logs, cada milissegundo conta.
  • \n
  • Sem dependências. Um único binário compilado estaticamente roda em qualquer Linux/Windows sem precisar instalar um interpretador.
  • \n
  • Segurança de tipos. Menos surpresas em tempo de execução — essencial para automação que roda em horários agendados.
  • \n
  • Acesso ao sistema. Trabalhe diretamente com WinAPI, POSIX, registro do Windows e processos, sem camadas intermediárias.
  • \n
\n\n

Claro, para protótipos rápidos, o Python é mais prático. Mas quando o script se torna parte do CI/CD ou da infraestrutura de produção, a automação com C++ se paga muitas vezes.

\n\n

Ferramentas: o que você precisa saber

\n\n

Para nossas tarefas, não precisamos de todo o C++20. Um conjunto básico é suficiente:

\n\n
    \n
  • std::filesystem (C++17) — manipulação de arquivos e pastas
  • \n
  • std::regex — parsing de texto
  • \n
  • std::fstream / std::stringstream — leitura e escrita
  • \n
  • std::chrono — medição de tempo e logging
  • \n
\n\n

Compile com a flag -std=c++17 (ou /std:c++17 para MSVC).

\n\n

Exemplo 1: Renomear arquivos em lote

\n\n

Imagine: você tem uma pasta com fotos IMG_001.jpg, IMG_002.jpg … e precisa renomeá-las para o formato 2025_01_15_001.jpg. Fazer manualmente leva 10 minutos entediantes. Com um script, leva 0,2 segundos.

\n\n

Código

\n
#include <iostream>\n#include <filesystem>\n#include <regex>\n#include <string>\n\nnamespace fs = std::filesystem;\n\nint main() {\n    std::string dir_path = "./fotos";\n    std::regex pattern(R"(IMG_(\\d+)\\.jpg)");\n    std::string prefix = "2025_01_15_";\n\n    for (auto &entry : fs::directory_iterator(dir_path)) {\n        std::string filename = entry.path().filename().string();\n        std::smatch match;\n\n        if (std::regex_match(filename, match, pattern)) {\n            std::string new_name = prefix + match[1].str() + ".jpg";\n            fs::rename(entry.path(), entry.path().parent_path() / new_name);\n            std::cout << "Renomeado: " << filename << " -> " << new_name << "\\n";\n        }\n    }\n    return 0;\n}
\n\n

Este exemplo mostra como a automação de tarefas em C++ com std::filesystem e expressões regulares resolve um problema do dia a dia em poucas linhas. Você pode adaptá-lo facilmente para seus próprios padrões.

\n\n

Exemplo 2: Parsing de logs e contagem de erros

\n\n

Suponha que um servidor gere logs no formato:

\n
2025-01-15 10:23:45 [ERROR] Falha na conexão com o banco\n2025-01-15 10:23:46 [INFO] Tentativa #1\n2025-01-15 10:23:47 [ERROR] Tempo limite excedido
\n\n

Precisamos coletar estatísticas: quantos erros de cada tipo e exibir o top 5 das mensagens mais frequentes. Um script Bash até resolve, mas se os logs tiverem gigabytes, o C++ será muito mais rápido.

\n\n

Código

\n
#inc                

Blogs

Book Recommendations