你写好了一个能正常运行的批处理文件或 PowerShell 脚本,现在想把它作为单个 .exe 交给别人:一个双击即可运行的文件,不会弹出“打开方式”的询问,也没有满是命令的控制台。
这并不需要在线“BAT 转 EXE 转换器”。Windows 已经自带了能做到这一点的工具,PowerShell 也有一个免费开源的模块,可以对 .ps1 脚本做同样的事。两者都在你自己的电脑上运行,所以得到的文件只由你的脚本生成,别无他物。
赶时间?
- 批处理文件(.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。 - 想要图标?用免费的图标提取器从任意程序中提取一个。
方法 1:用 IExpress 将 BAT 转为 EXE(Windows 自带)
IExpress 作为 Windows 的一部分已有几十年。它原本用于制作小型安装程序:把文件打包成一个 EXE,在 EXE 运行时解压到临时文件夹,然后启动一条命令。这条命令可以就是你的批处理文件。
- 按 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 不会直接启动批处理文件。 - 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 文件,然后单击 Next 创建 EXE。
需要注意一点:脚本是从临时文件夹运行的,而不是 EXE 所在的位置。像 copy data.txt backup\ 这样的行会在该临时文件夹中查找。对于脚本在包外读写的文件,请使用完整路径(%USERPROFILE%\Documents\data.txt)。
方法 2:用 ps2exe 将 PowerShell 转为 EXE
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:启动时请求管理员权限。-title "My Tool" -version "1.0.0":Windows 在文件属性中显示的信息。
更喜欢窗口界面而不是命令行?安装模块后运行 Win-PS2EXE:同一个工具,只是多了一个小窗体。
其他脚本:Python、AutoHotkey、Node.js
- Python:
pyinstaller --onefile script.py会在dist文件夹中生成一个 EXE。带窗口的程序请加上--noconsole。 - AutoHotkey:安装程序自带 Ahk2Exe:右键单击 .ahk 文件,选择 Compile Script。
- Node.js:较新版本(20 及以上)可以构建单一可执行应用(参见 Node.js 文档中的“Single executable applications”页面)。
你真的需要 EXE 吗?
很多时候,更简单的办法就够了:
- 快捷方式。右键单击 .bat 文件,选择 Send to → Desktop (create shortcut)(发送到 → 桌面快捷方式),然后在快捷方式属性中为它设置图标。双击即可运行脚本。
- 计划任务。对于需要每天运行或在登录时运行的脚本,任务计划程序可以直接运行 .bat 或 .ps1。
- 直接用脚本本身。如果你分享的对象使用 Windows,.bat 文件双击就能运行。
所有“BAT 转 EXE 转换器”都没告诉你的三件事
- 你的代码并没有被隐藏。这些工具把脚本存放在 EXE 内部,通常是纯文本。任何人都能把它读出来,例如使用我们的字符串提取器,它能列出任何文件中的可读文本。切勿在其中放入密码、令牌或密钥。
- 杀毒软件可能会报警。恶意软件也使用同样的封装方式,因此 Windows Defender 和 SmartScreen 可能会对完全无害的脚本 EXE 发出警告。用代码签名证书签名会有帮助,Microsoft 也接受针对你自己制作的文件的误报申报。
- 来自网站的 EXE 是你无法检查的文件。在线转换器返回的文件是在一台你一无所知的服务器上生成的。所以我们没有提供转换器,而是讲解系统自带的方法:用 IExpress 或 ps2exe,你清楚地知道文件里装了什么。
收到别人发来的 EXE,想在打开前知道它会运行什么?请阅读如何在不运行的情况下分析 EXE。
完成其余工作的免费工具
所有工具都在浏览器中运行:你的文件不会被上传到任何地方。