使用 UPX 批量压缩程序的批处理脚本
在软件开发和发布过程中,程序的体积往往是一个需要考虑的重要因素。 UPX(Ultimate Packer for eXecutables)是一个强大的可执行文件压缩工具,可以有效减小程序的体积。本文将介绍一个简单的批处理脚本,帮助用户在 Windows 环境下批量压缩同一文件夹中的所有 .exe
文件。
脚本功能
该脚本提供了多种压缩模式供用户选择,包括:
- 最高压缩比 (-9):适合对文件大小要求严格的情况。
- 快速压缩 (-1):适合对压缩速度有要求的情况。
- 最佳压缩 (–best):可能会更慢,但通常能得到更小的文件。
- 还原压缩 (–decompress):恢复到未压缩状态。
- 默认压缩:不指定任何参数以使用 UPX 的默认设置。
用户可以通过简单的菜单选择所需的压缩模式。
脚本代码
以下是完整的批处理脚本代码:
@ECHO OFF
CHCP 65001
SET UPX_PATH=D:\upx\upx-4.0.2-win64\upx.exe
:MENU
ECHO.
ECHO ===========================
ECHO UPX 批量程序打包
ECHO ===========================
ECHO 1. 最高压缩比 (-9)
ECHO 2. 快速压缩 (-1)
ECHO 3. 最佳压缩 (--best)
ECHO 4. 还原压缩 (--decompress)
ECHO 5. 默认压缩 (不指定参数)
ECHO 6. 显示帮助
ECHO 7. 退出
ECHO ===========================
SET /P CHOICE="请选择一个选项 (1-7) [默认选择5]: "
IF "%CHOICE%"=="" SET CHOICE=5 :: 如果没有输入,默认选择5
IF "%CHOICE%"=="1" SET COMPRESS_MODE=-9
IF "%CHOICE%"=="2" SET COMPRESS_MODE=-1
IF "%CHOICE%"=="3" SET COMPRESS_MODE=--best
IF "%CHOICE%"=="4" SET COMPRESS_MODE=--decompress
IF "%CHOICE%"=="5" SET COMPRESS_MODE= :: 不设置任何参数以使用默认压缩
IF "%CHOICE%"=="6" GOTO HELP
IF "%CHOICE%"=="7" EXIT
IF NOT DEFINED COMPRESS_MODE (
ECHO 无效选择,请重新运行脚本并选择有效选项。
PAUSE
GOTO MENU
)
REM 检查目录中的 .exe 文件并进行操作
FOR %%F IN (%~dp0*.exe) DO (
ECHO 操作文件: %%F 使用模式: %COMPRESS_MODE%
IF DEFINED COMPRESS_MODE (
"%UPX_PATH%" %COMPRESS_MODE% "%%F"
) ELSE (
"%UPX_PATH%" "%%F" :: 使用默认方式进行压缩
)
)
ECHO.
ECHO Done!
ECHO 该目录下所有的 .exe 文件已经被处理。
PAUSE
GOTO MENU :: 返回菜单
:HELP
ECHO.
ECHO UPX 工具帮助信息:
ECHO ===========================
ECHO -9 : 最高压缩比,适合对文件大小要求严格的情况
ECHO -1 : 快速压缩,适合对压缩速度有要求的情况
ECHO --best : 最佳压缩,可能会更慢,但通常能得到更小的文件
ECHO --decompress : 还原压缩,恢复到未压缩状态
ECHO ===========================
PAUSE
GOTO MENU
使用说明
- 将上述代码复制并粘贴到一个新的文本文件中,保存为
upx_batch.bat
。 - 确保将
UPX_PATH
设置为 UPX 可执行文件的正确路径。 - 双击运行
upx_batch.bat
文件。 - 按照屏幕上的提示选择所需的操作模式。
参考命令
默认压缩[upx 程序名.exe]
较快压缩[upx -1 程序名.exe]
较好压缩[upx -9 程序名.exe]
最优压缩[upx --best 程序名.exe]
还原压缩[upx -d 程序名.exe]
测试是否是UPX压缩[upx -t 程序名.exe]
显示UPX压缩清单[upx -l 程序名.exe]
显示UPX版本[upx -V]
显示UPX使用说明[upx -L]
UPX使用帮助[upx -h]
减少UPX压缩显示[upx -q 程序名.exe]
增加UPX压缩显示[upx -v 程序名.exe]
将UPX压缩另存为其它文件[upx -o 1.exe 程序名.exe]
强制压缩可疑文件[upx -f 程序名.exe]
保留备份文件[upx -k 程序名.exe]
不备份UPX压缩[upx --no-backup 程序名.exe]
无颜色UPX压缩[upx --no-color 程序名.exe]
UPX压缩无进度条显示[upx --no-progress 程序名.exe]
尝试所有可用的压缩方法和过滤器[慢][upx --brute 程序名.exe]
超级暴力尝试更多的压缩变体[非常慢] [upx --ultra-brute 程序名.exe]
保留额外数据[默认值][upx --overlay=copy 程序名.exe]
覆盖额外数据[upx --overlay=strip 程序名.exe]
不处理额外数据[upx --overlay=skip 程序名.exe]
压缩导出部分[upx --compress-exports=1 程序名.exe]
不压缩导出部分[upx --compress-exports=0 程序名.exe]
压缩所有图标[upx --compress-icons=3 程序名.exe]
压缩除第一个图标以外的所有图标[upx --compress-icons=1 程序名.exe]
压缩除第一个图标目录外的所有图标[默认值][upx --compress-icons=2 程序名.exe]
不压缩任何图标[upx --compress-icons=0 程序名.exe]
不压缩任何资源[upx --compress-resources=0 程序名.exe]
不压缩list指定的资源[upx --keep-resource=list 程序名.exe]
不剥离重定位[upx --strip-relocs=0 程序名.exe]
剥离重定位[upx --strip-relocs=1 程序名.exe]
总结
通过这个简单的批处理脚本,便于批量压缩同一文件夹中的所有 .exe
文件,同时可借助 UPX 参考命令来定制不同的压缩模式。