使用 UPX 批量压缩程序的批处理脚本 在软件开发和发布过程中,程序的体积往往是一个需要考虑的重要因素。UPX(Ultimate Packer for eXecutables) 是一个强大的可执行文件压缩工具,可以有效减小程序的体积。本文将介绍一个简单的批处理脚本,帮助用户在 Windows 环境下批量压缩同一文件夹中的所有 .exe 文件。
脚本功能 该脚本提供了多种压缩模式供用户选择,包括:
最高压缩比 (-9) :适合对文件大小要求严格的情况。
快速压缩 (-1) :适合对压缩速度有要求的情况。
最佳压缩 (–best) :可能会更慢,但通常能得到更小的文件。
还原压缩 (–decompress) :恢复到未压缩状态。
默认压缩 :不指定任何参数以使用 UPX 的默认设置。
用户可以通过简单的菜单选择所需的压缩模式。
脚本代码 以下是完整的批处理脚本代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 @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 文件。
按照屏幕上的提示选择所需的操作模式。
参考命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 默认压缩[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 参考命令来定制不同的压缩模式。