بازهم کاربرد برنامه نویسی در کارهای روزانه – Automation language

تا حالا شده مجبور باشید در محیط گرافیکی سیستم عامل یک کار تکراری رو پشت سر هم به تعداد زیادی انجام بدید؟ مثلا چند صد تا فایل دارید و قرار باشه اونا رو دونه دونه با یک نرم افزار خاصی باز کنید و یک کار یکسان رو روی همهء اونا انجام بدید و سیو کنید. اینطوری باید یک کار یکسان و تکراری رو پشت سر هم روی تعداد زیادی فایل انجام بدید که هم وقت زیادی میبره و هم آدم رو خسته میکنه.

خب در بعضی مطالب دیگری که قبلا داده بودم شخصا با چند مورد از چنین کارهایی مواجه شده بودم که تونسته بودم اونا رو با استفاده از برنامه های خط فرمان و نوشتن شل اسکریپت (همون بچ فایل و این حرفا) حل کنم. منظورم مثل این موارده:

یک استفاده مفید دیگر از خط فرمان در ویندوز – تبدیل فرمت فایلهای اسکن شده برای کاهش حجم

شل اسکریپت ویندوز برای اجرای یک خط فرمان بر روی فایلهایی با پسوند معین

اما یه وقتا هست (بخصوص در ویندوز که بقدر لینوکس در زمینهء خط فرمان پیشرفته و غنی نیست و همه جور برنامه هایی نداره که در خط فرمان هم بشه باهاشون کار کرد) که کارتون گیر یک برنامهء خاصه که فقط هم اینترفیس گرافیکی (GUI) داره و نمیشه در خط فرمان ازش استفاده کرد. من هم اخیرا با چنین نیازی مواجه شدم وقتی به هر دلیلی (داستانش کمی طولانیه) نیاز پیدا کردم تا تعداد زیادی فایل xps رو پرینت کنم. توضیح اینکه فرمت xps از نظر کاربرد یه چیزی هستن شبیه فرمت pdf که میکروسافت طراحی کرده و بعنوان یک فرمت باز که بصورت مجانی لایسنس میشه ارائه کرد تا احتمالا بجای فرمت PDF فراگیر بشه اما در عمل ازش استقبال چندانی نشد و نتونست رقیب جدی ای برای pdf بشه. اگر در قسمت انتخاب پرینتر در ویندوز موقع چاپ چیزی دقت کرده باشید، یک گزینه داره تحت عنوان Microsoft XPS Document Writer که اگر اون رو انتخاب کنید پرینت شما در قالب یک فایل با پسوند xps ذخیره میشه و میتونید بعدا اون رو با نرم افزارهایی که این فرمت رو ساپورت میکنن باز و مشاهده یا پرینت کنید و خاصیتش اینه که مثل pdf شکل فونت ها و بطور کلی Layout پرینت شما رو در هر جا که ببرید دقیقا به همون شکل اولیه که داشته حفظ میکنه. البته استفاده و ساپورت این فرمت همونطور که گفتم بخاطر اینکه کاربران ازش استقبال و استفاده چندانی نکردن فراگیر نیست.
من چند برنامه رو پیدا کردم که این فرمت رو ساپورت میکنن، منجمله مرورگر اینترنت اکسپلورر (البته فکر کنم باید فریمورک دات نت هم روی سیستم نصب باشه)، و دیگری یک برنامهء PDF reader بازمتن بنام SumatraPDF که از قبل روی سیستم داشتم (جالب اینکه ساپورت این برنامه بازمتن از فایلهای XPS از اینترنت اکسپلورر که مال خود میکروسافته بهتر بود – اینترنت اکسپلورر در هر چند مورد پرینت دچار مشکل میشد و خروجی پرینت خراب میداد). خب من میخواستم حدود 350 تا فایل xps رو با یکی از این نرم افزارها باز کنم و پرینتش کنم، ولی اصلا از این کار تکراری و زمانبر خوشم نمی آمد و گفتم منکه ابرقدرت کامپیوتر و برنامه نویسی هستم باید یه راه هوشمندانه ای پیدا کنم و از کامپیوتر بجای خودم کار بکشم! با یک جستجو در گوگل با کیوردهای مناسب توجهم به ابزارهایی جلب شد بنام Automation language (البته بعضی جاها هم با اسمهای دیگری منجمله نام کلیScripting language بهشون اشاره شده) که یکیش که مجانی (اما نه بازمتن) و برای ویندوزه اسمش KiXtart بود. خلاصه ما این برنامه رو دانلود کردیم و یخورده به مستندات و مثالهای همراهش نگاه کردم دیدم زبان اسکریپتی ساده و محدودی داره و تونستم با کمی بررسی و تست چیزی رو که میخوام از توش دربیارم و اسکریپتی بنویسم که با کمک این ابزار کارهایی رو که خودم باید بصورت دستی انجام میدادم برام انجام بده، یعنی من فقط اون اسکریپت رو اجرا میکردم و بعدش KiXtart فایلهای xps رو دونه دونه با SumatraPDF باز و پرینت میکرد و میبست، دقیقا به همون شکل که انگار یک نفر پشت PC نشسته و داره با استفاده از ماوس و کیبورد این کارها رو انجام میده و شما میبینید که مثلا فلان برنامه باز میشه و کادر Open اش باز میشه و آدرس فایلی توی کادر تایپ میشه، باز میشه، بعد کادر پرینت باز میشه، و همینطور الی آخر.
خلاصه حالا با یک خانواده ابزار جدیدی آشنا شدم که میتونم کارهای تکراری رو که راه حل خط فرمان در دسترس/راحتتری ندارن با اونا خودکار کنم، و این اطلاعات و تجربه رو با شما هم به اشتراک میذارم چون فکر کنم خیلی ها از وجود چنین ابزارهایی اطلاعی نداشته باشن. البته باید توجه داشت که موقعی که این ابزارها دارن کار میکنن چون خیلی از عملیاتشون رو از طریق رابط گرافیکی استاندارد سیستم عامل انجام میدن و مثل یک کاربر عادی عمل میکنن، احتمالا شما نمیتونید همزمان از رایانه خودتون برای کارهای دیگر استفاده کنید و باید بذارید کار این برنامه ها تموم بشه وگرنه ممکنه با دخالت شما روال کارشون بهم بخوره و اتفاقات پیشبینی نشده ای پیش بیاد!
من فکر کنم خیلی افراد در دنیا هستن که یکسری کارهای تکراری زمانبر و خسته کننده در محیط گرافیکی سیستم عامل و با اپلیکیشن های خاصی دارن که میشه با این ابزارها و برنامه نویسی های کوچک نسبتا ساده و محدود اسکریپتی اونا رو خودکار کرد، اما به علت عدم اطلاع یا بلد نبودن و مسلط نبودن در برنامه نویسی نمیتونن از این ابزارها برای انجام کارهای خودشون استفاده کنن. البته یادگیری طرز استفاده و برنامه نویسی برای این ابزارها ساده است و اکثرا زبان محدود و کوچک و ساده ای دارن که کارهای محدودی رو انجام میده و بنابراین فکر کنم حتی خیلی از کسانی که برنامه نویس نیستن هم بتونن با کمی زحمت و صرف وقت از اونا استفاده کنن.
البته همونطور که گفتم، این ابزارها فقط برای مواردی که راه حل بقدر کافی در دسترس و ساده و اصولی دیگری وجود نداره و تنها راه خودکارسازی عملیات مورد نظر شبیه سازی کار یک کاربر انسانی با سیستم است استفاده میشن، چون یکسری محدودیت ها و مشکلاتی دارن، مثل اینکه در زمان کارشون اکثرا نباید کسی با کامپیوتر کار دیگری بکنه، و حتی گاهی عملیات برنامه های دیگر روی سیستم ممکنه با کار این برنامه ها تداخل پیدا کنه (مثلا برای من پیش میاد که وسط کار یه برنامهء دیگه پنجره ای رو بالا میاورد و پنجره ای که برنامهء من داشت باهاش کار میکرد از focus خارج میشد و در نتیجه همه چیز بهم میریخت!) و کلا خیلی راحت ممکنه در کارشون مشکل پیش بیاد و بنابراین باید حواستون موقع کار و بعدش باشه و مطمئن بشید که مشکل و خطایی در جریان کار مورد نظر رخ نداده باشه و همه چیز طبق انتظار انجام شده، ضمنا یک محدودیت اونا هم شاید این باشه که نسبتا کند هستن چون خیلی کارها رو از طریق رابط کاربری استاندارد سیستم عامل انجام میدن (ولی همچنان در اکثر موارد در کل از انسان سریعتر عمل میکنن و باعث میشن هم کار از دوش شما برداشته بشه و هم سریعتر انجام بشه).
من بعنوان نمونه اسکریپتی رو که برای کار خودم نوشتم براتون میذارم که اگر خواستید بررسیش کنید و متوجه روش کار بشید: دانلود

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>