أتمتة المهام في لغة C#: 5 أدوات قوية للمطور الكسول

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

لماذا لغة C# ليست فقط للمواقع والألعاب؟

\n\n

عندما تسمع كلمة "أتمتة"، يتذكر معظم الناس Python أو Bash. وهذا صحيح: فهي خفيفة، سكربتية، "للفقراء". ولكن ماذا لو كنت مطور .NET لا يريد تعلم بناء جملة جديد من أجل سكربت واحد؟ أو أن مشروعك بالفعل بلغة C#، وجلب تبعيات Python من أجل تحليل السجلات هو أمر مزعج؟

\n\n

مرحبًا بك في عالم أتمتة المهام في لغة C#. إنها ليست مجرد "كتابة تطبيق وحدة تحكم". إنها أداة كاملة يمكنها العمل مع نظام الملفات، السجل، كائنات COM، واجهة المستخدم الرسومية، وحتى تنفيذ أوامر PowerShell. وكل هذا - بكتابة صارمة، مع IntelliSense وبدون مفاجآت.

\n\n

في هذه المقالة، سنستعرض 5 سيناريوهات محددة يمكنك تطبيقها اليوم. لا ماء - فقط كود وحالات حقيقية.

\n\n

1. العمل مع الملفات: تنظيف السجلات، أرشفة المشاريع

\n\n

الألم الأكثر شيوعًا لأي مطور هو المجلدات المتضخمة بالسجلات، الملفات غير المرغوب فيها، والحاجة إلى نسخ احتياطي للـ builds. أتمتة C# لعمليات الملفات تتم في 5 أسطر.

\n\n

مثال: حذف الملفات الأقدم من N يومًا

\n\n
using System.IO;\n\nstring path = @"C:\\Logs\\";\nint daysOld = 30;\n\nvar oldFiles = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories)\n    .Where(f => File.GetLastWriteTime(f) < DateTime.Now.AddDays(-daysOld));\n\nforeach (var file in oldFiles)\n{\n    File.Delete(file);\n    Console.WriteLine($"تم الحذف: {file}");\n}\n
\n\n

غيّر SearchOption.AllDirectories إلى TopDirectoryOnly - وسيعمل السكربت فقط في الجذر. أضف try-catch - وسيكون جاهزًا للإنتاج.

\n\n

مثال: أرشفة مجلد مع التاريخ

\n\n
using System.IO.Compression;\n\nstring source = @"C:\\Projects\\MyApp\\bin\\Release";\nstring zipPath = $@"C:\\Backups\\MyApp_{DateTime.Now:yyyy-MM-dd}.zip";\n\nZipFile.CreateFromDirectory(source, zipPath);\nConsole.WriteLine($"تم إنشاء الأرشيف: {zipPath}");\n
\n\n

يمكن ربط هذا الكود بمجدول Windows (Task Scheduler) - ونسيان النسخ الاحتياطي اليدوي. أتمتة في C# قيد التنفيذ.

\n\n

2. العمل مع السجل: تغيير إعدادات النظام

\n\n

أحيانًا تحتاج إلى كتابة مفتاح سجل لجميع المستخدمين، أو على العكس، حذف إدخال فيروسي. C# عبر Microsoft.Win32 تفعل ذلك بأمان وبدون ملفات BAT.

\n\n
using Microsoft.Win32;\n\n// تعيين قيمة\nRegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\\MyCompany", true);\nif (key == null)\n{\n    key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\\MyCompany");\n}\nkey.SetValue("InstallPath", @"C:\\Program Files\\MyApp");\nkey.Close();\n
\n\n

لـ HKEY_CURRENT_USER استخدم Registry.CurrentUser. مهم: لـ HKLM تحتاج صلاحيات المسؤول - قم بتشغيل التطبيق كمسؤول.

\n\n

3. PowerShell من C#: دمج عالمين

\n\n

أحيانًا يكون من الأسهل كتابة أمر PowerShell بدلاً من تنفيذه في C#. على سبيل المثال، الحصول على قائمة البرامج المثبتة أو إعادة تشغيل خدمة. مكتبة System.Management.Automation تسمح بتنفيذ كتابة السكربتات في C# مع استدعاء أوامر PS.

\n\n

قم بتثبيت حزمة NuGet:

\n
Install-Package Microsoft.PowerShell.SDK
\n\n

مثال: إعادة تشغيل خدمة

\n\n
using System.Management.Automation;\n\nusing (PowerShell ps = PowerShell.Create())\n{\n    ps.AddScript("Restart-Service -Name 'Spooler' -Force");\n    var results = ps.Invoke();\n    \n    if (ps.HadErrors)\n    {\n        foreach (var error in ps.Streams.Error)\n        {\n            Console.WriteLine($"خطأ: {error.Exception.Message}");\n        }\n    }\n    else\n    {\n        Console.WriteLine("تمت إعادة تشغيل الخدمة.");\n    }\n}\n
\n\n

بهذه الطريقة تحصل على مرونة PowerShell وأمان C#. مثالي لـ أتمتة Windows في الجذر

المدونات

توصيات الكتب