Swift सिर्फ ऐप के लिए नहीं है
\n\nजब भी 'Swift' का नाम सुनते हैं, तो सबसे पहले iOS डेवलपमेंट, Xcode, स्टोरीबोर्ड और अनंत कंस्ट्रेंट्स का ख्याल आता है। लेकिन इस भाषा का एक और पहलू है, जो बहुत कम लोग जानते हैं। Swift macOS पर टास्क ऑटोमेशन के लिए एक शक्तिशाली टूल है। और यहाँ बात ऐप कंपाइल करने की नहीं, बल्कि रोज़मर्रा के कामों की है: सौ फ़ाइलों का नाम बदलना, CSV रिपोर्ट पार्स करना, शाम 6 बजे नोटिफिकेशन भेजना, या सर्वर से लॉग इकट्ठा करना।
\n\nSwift क्यों, Python या Bash क्यों नहीं? क्योंकि Swift:
\n- \n
- macOS के साथ नेटिव रूप से काम करता है (
Foundation,Dispatch,UserNotificationsतक पहुँच); \n - वर्चुअल एनवायरनमेंट और डिपेंडेंसी की ज़रूरत नहीं (जब तक SPM में न जाएँ);
- स्पष्ट कंपाइलेशन एरर देता है — Bash की तरह एक्स्ट्रा स्पेस ढूँढने में घंटे नहीं लगेंगे;
- एक लाइन में स्क्रिप्ट की तरह चलाया जा सकता है:
swift myScript.swift।
इस लेख में मैं आपको Swift में ऑटोमेशन के कुछ वास्तविक उदाहरण दिखाऊँगा। आप कोड कॉपी करके अपने सिस्टम पर चला सकते हैं और सबसे ज़रूरी बात, अपनी खुद की यूटिलिटी लिखना सीख सकते हैं। चलिए शुरू करते हैं!
\n\nSwift स्क्रिप्ट कैसे काम करती है: थोड़ा सिद्धांत
\n\nSwift में ऑटोमेशन लिखने के लिए आपको Xcode की ज़रूरत नहीं है। बस एक टर्मिनल और कोई भी टेक्स्ट एडिटर काफी है। script.swift नाम की फ़ाइल बनाएँ और इसे इस कमांड से चलाएँ:
swift script.swift\n\nSwift खुद कोड को कंपाइल और एक्ज़ीक्यूट करेगा। अगर स्क्रिप्ट बड़ी है और बार-बार चलानी है, तो पहले से कंपाइल कर सकते हैं: swiftc -O script.swift -o script और फिर बाइनरी फ़ाइल चलाएँ।
हम जो भी आगे लिखेंगे, वह बिना किसी थर्ड-पार्टी लाइब्रेरी के काम करेगा। सिर्फ Foundation, जो अपने आप जुड़ जाता है।
परिदृश्य #1: फ़ाइलों का बैच रीनेमिंग
\n\nसोचिए: आपके पास IMG_001.jpg, IMG_002.jpg … IMG_100.jpg फ़ोटो का फ़ोल्डर है। आप इनका नाम बदलकर Vacation_1.jpg, Vacation_2.jpg इत्यादि रखना चाहते हैं। हाथ से — 100 ऑपरेशन। स्क्रिप्ट से — 0.5 सेकंड।
import Foundation\n\nlet fileManager = FileManager.default\nlet currentPath = fileManager.currentDirectoryPath\n\nguard let files = try? fileManager.contentsOfDirectory(atPath: currentPath) else {\n print("फ़ोल्डर पढ़ने में विफल")\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 = "Vacation_\\(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("❌ फ़ाइल \\(file) में त्रुटि: \\(error.localizedDescription)")\n }\n}\n\nयह कैसे काम करता है:
\n- \n
FileManager.default— फ़ाइल सिस्टम तक पहुँच; \n contentsOfDirectory— मौजूदा फ़ोल्डर में फ़ाइलों की सूची;- सिर्फ इमेज फ़िल्टर करना;
moveItemके ज़रिए नाम बदलना (हाँ, Swift में नाम बदलना मूव करना है)।
आप इस स्क्रिप्ट को आसानी से अपने हिसाब से ढाल सकते हैं: प्रीफ़िक्स बदलें, एक्सटेंशन बदलें, नाम में तारीख जोड़ें। यह एक उपयोगी Swift स्क्रिप्ट है जो हर दिन आपका समय बचाती है।
\n\nएक्स्ट्रा फीचर: तारीख के साथ सफ़िक्स
\n\nlet 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 // ... बाकी ऊपर के उदाहरण की तरह\n}\n\n