@echo off title PDF书签合并工具 - C语言版编译 chcp 65001 >nul echo ========================================== echo PDF书签合并工具 - C语言版编译脚本 echo ========================================== echo. REM 检查源文件 set SOURCE_FILES=slide_combine_core.c slide_combine_merger.c slide_combine_gui.c for %%f in (%SOURCE_FILES%) do ( if not exist "%%f" ( echo ❌ 错误:未找到源文件 %%f echo 请确保所有源文件都在当前目录下 pause exit /b 1 ) ) for %%f in (slide_combine_c.h slide_combine.rc) do ( if not exist "%%f" ( echo ❌ 错误:未找到文件 %%f echo 请确保所有文件都在当前目录下 pause exit /b 1 ) ) echo ✅ 所有源文件检查通过 echo. REM 检查编译器 echo 🔍 检查编译环境... set GCC_FOUND=0 set MINGW_PATH= REM 尝试常见的MinGW安装路径 set PATHS[0]=C:\msys64\mingw64\bin set PATHS[1]=C:\mingw64\bin set PATHS[2]=C:\TDM-GCC-64\bin set PATHS[3]=C:\mingw\bin set PATHS[4]=C:\devkitPro\devkitPPC\msys\bin for /L %%i in (0,1,4) do ( call set PATH_TO_CHECK=%%PATHS[%%i]%% if exist "!PATH_TO_CHECK!\gcc.exe" ( set MINGW_PATH=!PATH_TO_CHECK! set GCC_FOUND=1 echo ✅ 找到 GCC 在: !PATH_TO_CHECK! goto :gcc_found ) ) REM 检查系统PATH where gcc.exe >nul 2>&1 if %ERRORLEVEL% equ 0 ( set GCC_FOUND=1 echo ✅ 在系统PATH中找到GCC goto :gcc_found ) :gcc_found if "%GCC_FOUND%"=="0" ( echo ❌ 错误:未找到GCC编译器 echo. echo 请安装以下工具之一: echo 1. MSYS2:https://www.msys2.org/ echo 2. MinGW-w64:https://www.mingw-w64.org/ echo 3. TDM-GCC:https://jmeubank.github.io/tdm-gcc/ echo. echo 或者: echo 使用Visual Studio的开发者命令提示符 echo. pause exit /b 1 ) echo ✅ 编译环境检查通过 echo. REM 如果找到MinGW路径,添加到PATH if defined MINGW_PATH ( set PATH=%MINGW_PATH%;%PATH% ) REM 获取版本信息 for /f "tokens=1-3 delims=/ " %%a in ('date /t') do set DATE=%%c%%a%%b for /f "tokens=1-3 delims=:." %%a in ('time /t') do ( set TIME=%%a%%b set TIME=!TIME: =0! ) set VERSION=2.0.0 echo 📅 版本信息:%VERSION% (%DATE% %TIME%) echo. REM 清理之前的编译 echo 🧹 清理之前的编译... if exist "slide_combine.o" del "slide_combine.o" if exist "slide_combine.exe" del "slide_combine.exe" if exist "slide_combine.res" del "slide_combine.res" if exist "core.o" del "core.o" if exist "merger.o" del "merger.o" if exist "gui.o" del "gui.o" echo ✅ 清理完成 echo. REM 编译资源文件 echo 🔨 编译资源文件... windres -i slide_combine.rc -o slide_combine.res if %ERRORLEVEL% neq 0 ( echo ⚠️ 资源文件编译失败,继续使用默认图标 set RES_FILE= ) else ( echo ✅ 资源文件编译成功 set RES_FILE=slide_combine.res ) echo. REM 编译C语言程序 echo 🔨 编译C语言程序... echo 优化选项:-O2 -static echo 链接库:user32 gdi32 comctl32 shlwapi ole32 echo. gcc -O2 -mwindows -static ^ -DUNICODE -D_UNICODE ^ -Wall ^ %SOURCE_FILES% ^ %RES_FILE% ^ -o slide_combine.exe ^ -luser32 -lgdi32 -lcomctl32 -lshlwapi -lole32 if %ERRORLEVEL% neq 0 ( echo ❌ GCC编译失败! echo. echo 尝试使用Visual Studio编译器... goto :try_msvc ) echo ✅ GCC编译成功! goto :build_complete :try_msvc echo. echo 🔨 尝试使用MSVC编译器... REM 检查MSVC where cl.exe >nul 2>&1 if %ERRORLEVEL% neq 0 ( echo ❌ 未找到MSVC编译器 echo. echo 请安装以下工具之一: echo - MinGW-w64 (推荐) echo - Visual Studio 2019/2022 echo - Visual Studio Build Tools pause exit /b 1 ) REM MSVC编译 cl /EHsc /O2 ^ /DUNICODE /DUNICODE ^ %SOURCE_FILES% ^ /link user32.lib gdi32.lib comctl32.lib shlwapi.lib ole32.lib ^ /OUT:slide_combine.exe if %ERRORLEVEL% neq 0 ( echo ❌ MSVC编译也失败! pause exit /b 1 ) echo ✅ MSVC编译成功! :build_complete echo. REM 检查输出文件 if not exist "slide_combine.exe" ( echo ❌ 错误:未找到编译输出文件 pause exit /b 1 ) REM 获取文件大小 for %%F in ("slide_combine.exe") do set FILE_SIZE=%%~zF set /a FILE_SIZE_KB=%FILE_SIZE% / 1024 echo 📊 编译统计: echo 文件大小:%FILE_SIZE_KB% KB echo 优化级别:O2 echo 链接方式:静态链接 echo 编译器:已检测到的编译器 echo. REM 创建发布包 echo 📦 创建发布包... set RELEASE_NAME=SlideCombine_C_v%VERSION%_%DATE% if exist "%RELEASE_NAME%" rd /s /q "%RELEASE_NAME%" mkdir "%RELEASE_NAME%" REM 复制主程序 echo 📄 复制主程序... copy "slide_combine.exe" "%RELEASE_NAME%\" >nul REM 创建使用说明 echo 📝 创建使用说明... ( echo PDF书签合并工具 v%VERSION% - C语言版 echo ===================================== echo. echo 🎯 C语言版本特色: echo • 零依赖:纯C语言Win32,无需任何运行时 echo • 体积小:编译后约 %FILE_SIZE_KB% KB echo • 性能高:直接编译为机器码 echo • 兼容强:Windows 7-11 完全支持 echo • 绿色软件:复制即用,无任何安装 echo. echo 💻 系统要求: echo ✅ Windows 7 SP1 或更高版本 echo ✅ Windows 8/8.1 echo ✅ Windows 10/11 echo ✅ 无需安装任何运行时库 echo. echo 🚀 使用方法: echo 1. 双击运行 slide_combine.exe echo 2. 选择三个路径: echo • PDF文件夹路径:包含 FreePic2Pdf_bkmk.txt 文件的文件夹 echo • TXT源文件路径:包含元数据 TXT 文件的路径 echo • 输出路径:合并后文件的保存位置 echo 3. 点击"🚀 开始合并"按钮 echo 4. 查看实时处理日志 echo 5. 等待处理完成 echo. echo 📁 示例目录结构: echo PDF文件夹/ echo ├─ CH-875 1-3/FreePic2Pdf_bkmk.txt echo ├─ CH-875 4-6/FreePic2Pdf_bkmk.txt echo. echo TXT源文件/ echo ├─ CH-875 1-3.txt echo ├─ CH-875 4-6.txt echo. echo 输出路径/ echo └─ CH-875.txt ^(合并后的文件^) echo. echo 🌟 技术特点: echo • 🚀 零依赖:纯C语言,无任何外部库 echo • 📦 极小体积:%FILE_SIZE_KB% KB 绿色软件 echo • ⚡ 高性能:直接编译,启动迅速 echo • 🎯 智能排序:按数字大小正确排序文件 echo • 🔒 安全可靠:开源代码,无后门 echo • 🌍 多编码:自动检测 UTF-8、GBK、GB2312 echo • 📊 实时日志:详细显示处理进度 echo. echo 📋 版本信息: echo • 程序版本:v%VERSION% echo • 构建日期:%DATE% echo • 开发语言:C语言 + Win32 API echo • 文件大小:%FILE_SIZE_KB% KB echo • 支持系统:Windows 7-11 echo • 许可证:MIT开源 echo. echo 🎉 享受超高速、零依赖的PDF书签合并体验! ) > "%RELEASE_NAME%\C语言版使用说明.txt" REM 创建启动脚本 echo 🚀 创建启动脚本... ( echo @echo off echo title PDF书签合并工具 v%VERSION% echo echo 启动 PDF书签合并工具... echo echo C语言零依赖版本 echo echo 文件大小:%FILE_SIZE_KB% KB echo echo. echo. echo if exist "slide_combine.exe" ^( echo echo ✅ 程序已启动 - C语言零依赖版本 echo start "" "slide_combine.exe" echo ^) else ^( echo echo ❌ 错误:未找到 slide_combine.exe echo echo 请确保在正确的目录中运行此脚本 echo pause echo ^) echo. echo timeout /t 2 ^>nul ) > "%RELEASE_NAME%\启动程序.bat" echo. echo ========================================== echo 🎉 C语言版编译完成 echo ========================================== echo ✅ 编译状态:成功 echo 📦 发布包名称:%RELEASE_NAME% echo 💾 主程序大小:%FILE_SIZE_KB% KB echo 🎯 语言版本:C语言 + Win32 API echo 🔗 链接方式:静态链接 echo 📁 发布包位置:%CD%\%RELEASE_NAME%\ echo ⚡ 发布包内容: echo ├─ slide_combine.exe ^(主程序,%FILE_SIZE_KB% KB^) echo ├─ C语言版使用说明.txt ^(详细指南^) echo └─ 启动程序.bat ^(快捷启动^) echo. echo 🌟 C语言版本优势: echo • ✅ 绝对零依赖:无需任何运行时 echo • ✅ 极小体积:%FILE_SIZE_KB% KB 绿色软件 echo • ✅ 超高性能:直接编译为机器码 echo • ✅ 完美兼容:Windows 7-11 原生支持 echo • ✅ 安全可靠:开源C语言代码 echo • ✅ 启动迅速:无虚拟机开销 echo • ✅ 内存占用:极低的资源使用 echo. echo 🎯 部署说明: echo 1. 将整个 %RELEASE_NAME% 文件夹复制到任意电脑 echo 2. 直接运行 slide_combine.exe echo 3. 无需安装任何软件,真正的零依赖绿色软件! echo. REM 询问是否打开发布文件夹 echo 是否打开发布文件夹?(Y/N) set /p choice=请输入选择: if /i "%choice%"=="Y" ( start "" "%RELEASE_NAME%" echo ✅ 已打开发布文件夹 ) echo. echo 🎉 C语言版编译发布完成!按任意键退出... pause >nul