@echo off chcp 65001 setlocal EnableDelayedExpansion echo 开始测试打包... :: 设置工作目录为脚本所在目录 cd /d "%~dp0" :: 激活虚拟环境 if exist "venv\Scripts\activate.bat" ( echo 激活虚拟环境... call venv\Scripts\activate.bat ) else ( echo 警告: 未找到虚拟环境,使用系统 Python ) :: 确保安装了必要的包 echo 检查依赖包... pip install -r requirements.txt :: 读取版本号 set /p VERSION= 3.4) for /f "tokens=1,2 delims=." %%a in ("!VERSION!") do ( set MAJOR_VERSION=%%a.%%b ) echo 主版本目录: !MAJOR_VERSION! :: 读取测试版本号(如果存在) if exist testversion.txt ( set /p TEST_VERSION=testversion.txt echo 测试版本号: !TEST_VERSION! :: 组合完整版本号 set FULL_VERSION=!VERSION!.!TEST_VERSION! echo 完整版本号: !FULL_VERSION! :: 创建测试版本目录 set TEST_DIR=dist\test\!MAJOR_VERSION! if not exist "!TEST_DIR!" ( mkdir "!TEST_DIR!" echo 创建目录: !TEST_DIR! ) :: 清理 Python 缓存文件 echo 清理Python缓存文件... for /d /r . %%d in (__pycache__) do @if exist "%%d" rd /s /q "%%d" del /s /q *.pyc >nul 2>&1 del /s /q *.pyo >nul 2>&1 :: 清理旧的打包文件 echo 清理旧文件... if exist "build" rd /s /q "build" if exist "*.spec" del /f /q "*.spec" :: 使用优化选项进行打包 echo 开始打包... pyinstaller ^ --noconfirm ^ --clean ^ --onefile ^ --noconsole ^ --icon=icon/two.ico ^ --name "听泉cursor助手_test" ^ --add-data "icon;icon" ^ --add-data "version.txt;." ^ --add-data "testversion.txt;." ^ --add-data "requirements.txt;." ^ --exclude-module _tkinter ^ --exclude-module tkinter ^ --exclude-module PIL.ImageTk ^ --exclude-module PIL.ImageWin ^ --exclude-module numpy ^ --exclude-module pandas ^ --exclude-module matplotlib ^ --exclude "__pycache__" ^ --exclude "*.pyc" ^ --exclude "*.pyo" ^ --exclude "*.pyd" ^ main.py :: 检查打包结果并移动文件 set TEMP_FILE=dist\听泉cursor助手_test.exe set TARGET_FILE=!TEST_DIR!\听泉cursor助手v!FULL_VERSION!.exe echo 检查文件: !TEMP_FILE! if exist "!TEMP_FILE!" ( echo 测试打包成功! :: 移动到版本目录 echo 移动文件到: !TARGET_FILE! move "!TEMP_FILE!" "!TARGET_FILE!" :: 显示文件大小 for %%I in ("!TARGET_FILE!") do ( echo 文件大小: %%~zI 字节 ) echo. echo 测试版本构建完成! echo 版本号: v!FULL_VERSION! echo 文件位置: !TARGET_FILE! ) else ( echo 错误: 打包失败,文件不存在 ) :: 退出虚拟环境 if exist "venv\Scripts\activate.bat" ( echo 退出虚拟环境... deactivate ) endlocal pause