یک فایل batch یا اسکریپت PowerShell نوشتهاید که کار میکند و حالا میخواهید آن را بهصورت یک فایل .exe به کسی بدهید: یک فایل برای دوبار کلیک، بدون پرسش «باز کردن با» و بدون کنسولی پر از فرمان.
برای این کار به «مبدل BAT به EXE» آنلاین نیازی ندارید. Windows از قبل ابزاری برای این کار دارد و PowerShell هم یک ماژول رایگان و متنباز دارد که همین کار را برای اسکریپتهای .ps1 انجام میدهد. هر دو روی رایانه خودتان اجرا میشوند، پس فایلی که میگیرید فقط از اسکریپت شما ساخته شده است.
عجله دارید؟
- فایل batch (.bat / .cmd): کلیدهای Win + R را بزنید،
iexpressرا تایپ کنید و فایل را با فرمان نصبcmd /c yourscript.batبستهبندی کنید. - PowerShell (.ps1): یک بار
Install-Module ps2exe -Scope CurrentUserرا اجرا کنید، سپسInvoke-ps2exe .\script.ps1 .\script.exe. - Python (.py):
pip install pyinstaller، سپسpyinstaller --onefile script.py. - آیکون میخواهید؟ با استخراجگر آیکون رایگان، آیکون هر برنامهای را بردارید.
روش ۱: BAT به EXE با IExpress (داخلی Windows)
IExpress دهها سال است که بخشی از Windows است. برای ساخت نصبکنندههای کوچک طراحی شده: فایلها را در یک EXE بستهبندی میکند، هنگام اجرای EXE آنها را در یک پوشه موقت باز میکند و یک فرمان را اجرا میکند. آن فرمان میتواند فایل batch شما باشد.
- کلیدهای Win + R را بزنید،
iexpressرا تایپ کنید و Enter را بزنید. - گزینه Create new Self Extraction Directive file را انتخاب کنید و روی Next کلیک کنید.
- گزینه Extract files and run an installation command را انتخاب کنید.
- برای بسته یک عنوان بگذارید (در عنوان پنجره هر پیامی نشان داده میشود).
- درخواست تأیید: No prompt. توافقنامه مجوز: Do not display a license.
- Packaged files: روی Add کلیک کنید و فایل
.batخود را (و هر فایلی که لازم دارد) انتخاب کنید. - Install Program: خودتان
cmd /c yourscript.batرا با نام فایلتان تایپ کنید. انتخاب فایل .bat از فهرست بهتنهایی اغلب کاری نمیکند، چون IExpress فایلهای batch را مستقیم اجرا نمیکند. - Show window: Default برای دیدن کنسول، یا Hidden برای اجرای بیصدا.
- پیام پایان: No message.
- Package name: محل ذخیره EXE را انتخاب کنید و Hide File Extracting Progress Animation from User و Store files using Long File Name inside Package را تیک بزنید.
- Restart: No restart. اگر میخواهید بعداً دوباره بسازید فایل SED را ذخیره کنید، سپس برای ساخت EXE روی Next کلیک کنید.
یک نکته: اسکریپت از یک پوشه موقت اجرا میشود، نه از جایی که EXE قرار دارد. خطی مثل copy data.txt backup\ در همان پوشه موقت جستوجو میکند. برای فایلهایی که اسکریپت بیرون از بسته میخواند یا مینویسد از مسیر کامل (%USERPROFILE%\Documents\data.txt) استفاده کنید.
روش ۲: PowerShell به EXE با ps2exe
ps2exe یک ماژول رایگان و متنباز PowerShell است که در PowerShell Gallery رسمی منتشر شده است. اسکریپت .ps1 را در یک EXE کوچک میپیچد که آن را اجرا میکند و امکان تعیین آیکون، نسخه و نمایش یا عدم نمایش پنجره کنسول را میدهد.
- PowerShell را باز کنید (دسترسی مدیر لازم نیست) و ماژول را یک بار نصب کنید:
اگر PowerShell خواست ارائهدهنده NuGet را نصب کند یا به مخزن PSGallery اعتماد کند، پاسخ دهید Y.Install-Module ps2exe -Scope CurrentUser - به پوشه اسکریپت خود بروید و EXE را بسازید:
Invoke-ps2exe .\script.ps1 .\script.exe - گزینههای مفید:
-noConsole: بدون پنجره کنسول (برای اسکریپتهایی که فرم یا کادر پیام نشان میدهند).-iconFile .\app.ico: آیکون فایل EXE.-requireAdmin: هنگام اجرا دسترسی مدیر (administrator) میخواهد.-title "My Tool" -version "1.0.0": آنچه Windows در ویژگیهای فایل نشان میدهد.
پنجره را به خط فرمان ترجیح میدهید؟ پس از نصب ماژول Win-PS2EXE را اجرا کنید: همان ابزار است با یک فرم کوچک.
اسکریپتهای دیگر: Python، AutoHotkey، Node.js
- Python:
pyinstaller --onefile script.pyیک EXE در پوشهdistمیسازد. برای برنامهای با پنجره،--noconsoleرا اضافه کنید. - AutoHotkey: نصبکننده آن Ahk2Exe را دارد: روی فایل .ahk راستکلیک کنید و Compile Script را انتخاب کنید.
- Node.js: نسخههای جدید (۲۰ به بعد) میتوانند یک برنامه اجرایی واحد بسازند (صفحه “Single executable applications” در مستندات Node.js را ببینید).
واقعاً به EXE نیاز دارید؟
اغلب گزینهای سادهتر کار را انجام میدهد:
- یک میانبر. روی فایل .bat راستکلیک کنید، Send to → Desktop (create shortcut)، سپس در ویژگیهای میانبر به آن آیکون بدهید. دوبار کلیک روی آن اسکریپت را اجرا میکند.
- یک وظیفه زمانبندیشده. برای اسکریپتی که باید هر روز یا هنگام ورود به سیستم اجرا شود، Task Scheduler فایل .bat یا .ps1 را مستقیم اجرا میکند.
- خود اسکریپت. اگر کسانی که با آنها به اشتراک میگذارید از Windows استفاده میکنند، فایل .bat همین حالا با دوبار کلیک اجرا میشود.
سه چیزی که هر «مبدل BAT به EXE» نمیگوید
- کد شما پنهان نیست. این ابزارها اسکریپت را درون EXE ذخیره میکنند، اغلب بهصورت متن ساده. هر کسی میتواند آن را دوباره بخواند، مثلاً با استخراجگر رشته ما که متن خوانای درون هر فایلی را فهرست میکند. هرگز رمز عبور، توکن یا کلید در آن نگذارید.
- ممکن است آنتیویروسها هشدار دهند. بدافزارها از همین پوششها استفاده میکنند، پس Windows Defender و SmartScreen ممکن است درباره EXE اسکریپتی کاملاً بیخطر هشدار دهند. امضا با گواهی امضای کد کمک میکند و Microsoft گزارش تشخیص اشتباه را برای فایلهایی که خودتان ساختهاید میپذیرد.
- فایل EXE از یک وبسایت فایلی است که نمیتوانید بررسیاش کنید. مبدل آنلاین فایلی برمیگرداند که روی سروری ساخته شده که هیچ چیز دربارهاش نمیدانید. به همین دلیل بهجای ارائه مبدل، روش داخلی را توضیح میدهیم: با IExpress یا ps2exe دقیقاً میدانید چه چیزی وارد فایل شده است.
یک EXE از کس دیگری گرفتهاید و میخواهید پیش از باز کردن بدانید چه چیزی اجرا میکند؟ نحوه تحلیل EXE بدون اجرای آن را بخوانید.
ابزارهای رایگان برای بقیه کار
همه در مرورگر شما اجرا میشوند: فایلهایتان به هیچ جا آپلود نمیشوند.