Автоматизация задач на C#: 5 мощных инструментов для ленивого разработчика

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Почему C# — это не только про сайты и игры?

Когда слышишь «автоматизация», большинство вспоминает Python или Bash. И это справедливо: они легкие, скриптовые, «для бедных». Но что, если вы — .NET-разработчик, который не хочет учить новый синтаксис ради одного скрипта? Или ваш проект уже на C#, и тащить Python-зависимости ради парсинга логов — это ад?

Добро пожаловать в мир автоматизации задач на C#. Это не просто «написать консольное приложение». Это полноценный инструмент, который может работать с файловой системой, реестром, COM-объектами, GUI и даже выполнять PowerShell-команды. И всё это — в строгой типизации, с IntelliSense и без сюрпризов.

В этой статье мы разберем 5 конкретных сценариев, которые вы сможете применить уже сегодня. Никакой воды — только код и реальные кейсы.

1. Работа с файлами: чистим логи, архивируем проекты

Самая частая боль любого разработчика — разросшиеся папки с логами, мусорные файлы и необходимость бэкапить билды. C# автоматизация файловых операций делается в 5 строк.

Пример: удаление файлов старше N дней

using System.IO;

string path = @"C:\Logs\";
int daysOld = 30;

var oldFiles = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories)
    .Where(f => File.GetLastWriteTime(f) < DateTime.Now.AddDays(-daysOld));

foreach (var file in oldFiles)
{
    File.Delete(file);
    Console.WriteLine($"Удалён: {file}");
}

Меняем SearchOption.AllDirectories на TopDirectoryOnly — и скрипт работает только в корне. Добавляем try-catch — и он готов к продакшену.

Пример: архивация папки с датой

using System.IO.Compression;

string source = @"C:\Projects\MyApp\bin\Release";
string zipPath = $@"C:\Backups\MyApp_{DateTime.Now:yyyy-MM-dd}.zip";

ZipFile.CreateFromDirectory(source, zipPath);
Console.WriteLine($"Архив создан: {zipPath}");

Этот код можно повесить на планировщик Windows (Task Scheduler) — и забыть о ручных бэкапах. Автоматизация на C# в действии.

2. Работа с реестром: меняем настройки системы

Иногда нужно прописать ключ реестра для всех пользователей или, наоборот, удалить вирусную запись. C# через Microsoft.Win32 делает это безопасно и без BAT-файлов.

using Microsoft.Win32;

// Установка значения
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\MyCompany", true);
if (key == null)
{
    key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\MyCompany");
}
key.SetValue("InstallPath", @"C:\Program Files\MyApp");
key.Close();

Для HKEY_CURRENT_USER используем Registry.CurrentUser. Важно: для HKLM нужны права администратора — запускайте приложение от имени администратора.

3. PowerShell из C#: скрещиваем два мира

Иногда проще написать команду PowerShell, чем реализовывать её на C#. Например, получить список установленных программ или перезагрузить службу. Библиотека System.Management.Automation позволяет выполнять скриптинг на C# с вызовом PS-команд.

Установите NuGet-пакет:

Install-Package Microsoft.PowerShell.SDK

Пример: перезапуск службы

using System.Management.Automation;

using (PowerShell ps = PowerShell.Create())
{
    ps.AddScript("Restart-Service -Name 'Spooler' -Force");
    var results = ps.Invoke();
    
    if (ps.HadErrors)
    {
        foreach (var error in ps.Streams.Error)
        {
            Console.WriteLine($"Ошибка: {error.Exception.Message}");
        }
    }
    else
    {
        Console.WriteLine("Служба перезапущена.");
    }
}

Таким образом вы получаете гибкость PowerShell и безопасность C#. Идеально для автоматизации Windows в корпоративной среде.

4. GUI-автоматизация: кликаем за пользователя

Представьте: есть legacy-приложение без API, и вам нужно вводить данные каждое утро. Или тестировать UI в 2000-й раз. Тут на помощь приходят библиотеки для автоматизации GUI на C#.

Лучший выбор для Windows — FlaUI (на базе Microsoft UIA). Установите:

Install-Package FlaUI.UIA3

Пример: открыть Блокнот и написать текст

using FlaUI.UIA3;
using FlaUI.Core.AutomationElements;

var app = Application.Launch("notepad.exe");
var window = app.GetMainWindow(new UIA3Automation());
var edit = window.FindFirstDescendant(cf => cf.ByControlType(FlaUI.Core.Definitions.ControlType.Edit))
    .AsTextBox();

edit.Text = "Привет, автоматизация!";
Console.WriteLine("Текст введён.");

FlaUI умеет кликать кнопки, читать таблицы, ждать появления окон. Это мощный инструмент для GUI автоматизации C#, который заменяет AutoIt и Selenium для десктопа.

5. Работа с COM-объектами: Excel, Outlook, Word

Если вам нужно сгенерировать отчёт в Excel или разослать письма через Outlook — необязательно тащить Interop. Но если он уже есть в проекте, C# с ним справляется отлично.

Добавьте ссылку на Microsoft.Office.Interop.Excel (через COM или NuGet).

Пример: создание Excel-файла

using Excel = Microsoft.Office.Interop.Excel;

var excelApp = new Excel.Application();
excelApp.Visible = false;

var workbook = excelApp.Workbooks.Add();
var sheet = (Excel.Worksheet)workbook.Sheets[1];
sheet.Cells[1, 1] = "Название";
sheet.Cells[1, 2] = "Количество";
sheet.Cells[2, 1] = "Товар A";
sheet.Cells[2, 2] = 42;

workbook.SaveAs(@"C:\Report.xlsx");
workbook.Close();
excelApp.Quit();

Важно: не забывайте вызывать Marshal.ReleaseComObject для каждого COM-объекта, иначе процесс Excel повиснет в памяти.

Как собрать всё вместе: универсальный скрипт-оркестратор

Лучший способ использовать автоматизацию задач на C# — создать консольное приложение с параметрами командной строки. Например:

static void Main(string[] args)
{
    switch (args[0])
    {
        case "clean-logs":
            CleanLogs(args[1], int.Parse(args[2]));
            break;
        case "backup":
            BackupProject(args[1], args[2]);
            break;
        case "start-service":
            RestartService(args[1]);
            break;
        default:
            Console.WriteLine("Неизвестная команда");
            break;
    }
}

Затем вы создаёте BAT-файлы или задачи в Task

Блоги

Рекомендаций по книгам