You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jekyll如何将对应章节静态cpp文件批量打包为zip压缩包提供下载

Windows环境Jekyll自动生成章节习题zip包实现方案

方案一:Jekyll自定义插件(构建时自动执行)

  • 首先安装依赖:在项目Gemfile中添加gem 'rubyzip',执行bundle install完成安装。
  • 在项目根目录创建_plugins文件夹,新建generate_chapter_zips.rb文件,写入如下代码:
require 'zip'

Jekyll::Hooks.register :site, :after_init do |site|
  # 配置路径,替换为你实际存放cpp文件的相对路径
  cpp_source_dir = File.join(site.source, 'solutions')
  zip_output_dir = File.join(site.source, 'assets', 'zips')
  FileUtils.mkdir_p(zip_output_dir) unless Dir.exist?(zip_output_dir)

  # 按章节分组cpp文件
  chapter_files = Hash.new { |h, k| h[k] = [] }
  Dir.glob(File.join(cpp_source_dir, '*.cpp')).each do |file_path|
    file_name = File.basename(file_path)
    # 提取文件名前两位作为章节号,适配你的命名规则
    chapter_num = file_name[0..1]
    chapter_files[chapter_num] << file_path
  end

  # 逐章节生成zip
  chapter_files.each do |chapter, files|
    zip_path = File.join(zip_output_dir, "chapter_#{chapter}.zip")
    Zip::File.open(zip_path, Zip::File::CREATE) do |zipfile|
      files.each do |file|
        zipfile.add(File.basename(file), file)
      end
    end
    # 将生成的zip加入静态文件列表,让Jekyll自动发布
    site.static_files << Jekyll::StaticFile.new(site, site.source, 'assets/zips', "chapter_#{chapter}.zip")
  end
end
  • 配置完成后每次执行jekyll build或jekyll serve都会自动扫描更新zip包,无需手动操作。

方案二:Windows批处理脚本(无需修改Jekyll逻辑)

如果不想使用Ruby插件,可以用Windows原生工具实现打包,适合不熟悉Ruby开发的场景:

  • 在项目根目录新建pack_chapters.bat文件,写入如下代码:
@echo off
setlocal enabledelayedexpansion
:: 替换为你实际存放cpp文件的相对路径
set "cpp_dir=solutions"
set "zip_output_dir=assets\zips"
if not exist %zip_output_dir% mkdir %zip_output_dir%

:: 清理旧zip文件
del /q %zip_output_dir%\*.zip 2>nul

:: 遍历所有cpp文件按章节打包,Windows10 1809及以上版本自带tar命令
for %%f in (%cpp_dir%\*.cpp) do (
    set "filename=%%~nf"
    :: 取前两位字符为章节号,适配你的命名规则
    set "chapter=!filename:~0,2!"
    tar -a -c -f %zip_output_dir%\chapter_!chapter!.zip "%%f"
)
  • 使用方式:每次修改cpp文件后执行该批处理即可自动更新所有zip包,也可以把该脚本加入Jekyll构建前置命令,实现自动执行。

页面中添加下载链接

你原来遍历site.static_files生成章节页面的逻辑无需修改,只需要在对应章节页面添加如下下载链接即可:

<a href="/assets/zips/chapter_{{ chapter_num }}.zip">下载本章全部习题解答</a>

内容的提问来源于stack exchange,提问作者PhilLab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 15:36:03