C# सिर्फ वेबसाइट और गेम के लिए ही क्यों नहीं है?
\n\nजब आप "स्वचालन" सुनते हैं, तो ज़्यादातर लोग Python या Bash के बारे में सोचते हैं। और यह उचित है: वे हल्के, स्क्रिप्ट-आधारित और "गरीबों के लिए" हैं। लेकिन क्या होगा यदि आप एक .NET डेवलपर हैं जो एक स्क्रिप्ट के लिए नया सिंटैक्स नहीं सीखना चाहता? या आपका प्रोजेक्ट पहले से C# पर है, और लॉग पार्स करने के लिए Python डिपेंडेंसी लाना एक बुरा सपना है?
\n\nC# में कार्यों के स्वचालन की दुनिया में आपका स्वागत है। यह सिर्फ "कंसोल एप्लिकेशन लिखना" नहीं है। यह एक पूर्ण उपकरण है जो फ़ाइल सिस्टम, रजिस्ट्री, COM ऑब्जेक्ट, GUI और यहां तक कि PowerShell कमांड के साथ भी काम कर सकता है। और यह सब सख्त टाइपिंग, IntelliSense और बिना किसी आश्चर्य के होता है।
\n\nइस लेख में, हम 5 विशिष्ट परिदृश्यों पर चर्चा करेंगे जिन्हें आप आज ही लागू कर सकते हैं। कोई बेकार की बात नहीं - केवल कोड और वास्तविक मामले।
\n\n1. फ़ाइलों के साथ काम: लॉग साफ़ करना, प्रोजेक्ट संग्रहित करना
\n\nकिसी भी डेवलपर का सबसे आम दर्द - लॉग से भरे फ़ोल्डर, कचरा फ़ाइलें और बिल्ड का बैकअप लेने की आवश्यकता। C# स्वचालन फ़ाइल संचालन 5 लाइनों में किया जाता है।
\n\nउदाहरण: N दिनों से पुरानी फ़ाइलें हटाना
\n\nusing 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\nSearchOption.AllDirectories को TopDirectoryOnly में बदलें - और स्क्रिप्ट केवल रूट में काम करेगी। try-catch जोड़ें - और यह प्रोडक्शन के लिए तैयार है।
उदाहरण: तिथि के साथ फ़ोल्डर संग्रहित करना
\n\nusing 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इस कोड को विंडोज टास्क शेड्यूलर (Task Scheduler) पर लटकाया जा सकता है - और मैन्युअल बैकअप के बारे में भूल जाएं। C# में स्वचालन क्रियान्वित।
\n\n2. रजिस्ट्री के साथ काम: सिस्टम सेटिंग्स बदलना
\n\nकभी-कभी सभी उपयोगकर्ताओं के लिए एक रजिस्ट्री कुंजी सेट करने या, इसके विपरीत, एक वायरल एंट्री को हटाने की आवश्यकता होती है। C# Microsoft.Win32 के माध्यम से इसे BAT फ़ाइलों के बिना सुरक्षित रूप से करता है।
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\nHKEY_CURRENT_USER के लिए Registry.CurrentUser का उपयोग करें। महत्वपूर्ण: HKLM के लिए एडमिन अधिकार आवश्यक हैं - एप्लिकेशन को एडमिनिस्ट्रेटर के रूप में चलाएं।
3. C# से PowerShell: दो दुनियाओं का मिलन
\n\nकभी-कभी C# पर इसे लागू करने की तुलना में PowerShell कमांड लिखना आसान होता है। उदाहरण के लिए, इंस्टॉल किए गए प्रोग्रामों की सूची प्राप्त करना या सेवा को पुनरारंभ करना। लाइब्रेरी System.Management.Automation PS कमांड को कॉल करके C# में स्क्रिप्टिंग की अनुमति देती है।
NuGet पैकेज इंस्टॉल करें:
\nInstall-Package Microsoft.PowerShell.SDK\n\nउदाहरण: सेवा को पुनरारंभ करना
\n\nusing 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# की सुरक्षा मिलती है। विंडोज स्वचालन के लिए आदर्श।