Hugo 博客每次更新内容都要手动执行 git add、git commit、git push 三个命令,很繁琐。本文教你创建一个批处理脚本,双击即可自动推送,还能避免 Windows 批处理文件的中文乱码问题。
一、问题场景#
假设你的 Hugo 博客工作流是:
- 本地写好 Markdown 文章,放在
content/目录下 - 执行
git add content/添加到暂存区 - 执行
git commit -m "新文章"提交 - 执行
git push推送到 GitHub - Cloudflare Pages 自动检测到更新,触发构建部署
每次都手动敲三行命令很烦,尤其是一天可能更新好几次的时候。
二、创建批处理脚本#
2.1 最简单的版本#
在你的 Hugo 博客根目录(比如 C:\Users\yourname\my-book-blog)新建 push-now.bat:
@echo off
cd /d "你的博客路径"
git add content/
git commit -m "auto push %date% %time:~0,5%"
git push
pause双击运行,看到 Press any key to continue... 说明执行成功。
2.2 加上中文提示(推荐)#
@echo off
cd /d "你的博客路径"
echo 正在添加文件...
git add content/
echo 正在提交...
git commit -m "auto push %date% %time:~0,5%"
echo 正在推送到 GitHub...
git push
echo 成功!已推送到 GitHub
pause这样执行过程一目了然。
三、解决批处理文件中文乱码问题#
3.1 问题现象#
你在批处理文件里写了中文 echo 正在推送到 GitHub...,双击运行后变成:
'鍒?GitHub...' 不是内部或外部命令这是因为 Windows 的 cmd.exe 默认使用 GBK 编码,而很多编辑器(包括记事本保存时)默认用 UTF-8,导致中文被错误解析,命令被截断。
3.2 根本原因#
| 组件 | 默认编码 | 问题 |
|---|---|---|
| Windows cmd.exe | GBK (CP936) | 只能正确读取 ANSI/GBK 文件 |
| 记事本(Win10+) | UTF-8 无 BOM | 中文在 cmd 里乱码 |
| VS Code 默认 | UTF-8 无 BOM | 中文在 cmd 里乱码 |
3.3 解决方法#
方法一:用记事本另存为 ANSI 编码
- 用记事本打开
.bat文件 - 点击 文件 → 另存为
- 编码选择 ANSI
- 保存覆盖原文件
方法二:用命令行工具自动写入 GBK 编码
如果你用的是 OpenClaw/QClaw,可以用 qclaw-text-file 技能:
python "C:\Program Files\QClaw\resources\openclaw\config\skills\qclaw-text-file\scripts\write_file.py" `
--path "你的博客路径\push-now.bat" `
--content-file "临时文件路径"这个脚本会自动检测文件内容和当前系统,Windows 上 .bat 含中文时自动使用 GBK 编码写入。
四、脚本进阶:只在有改动时才提交#
有时候你点太快,但内容其实没变化,会出现:
no changes added to commit
Everything up-to-date改用这个版本,先检查是否有改动:
@echo off
cd /d "你的博客路径"
git add content/
REM 检查是否有改动
git status --short --porcelain | findstr /v "^?? public/" | findstr /v "^ M public/" > nul
if errorlevel 1 (
echo 内容无变化,无需提交
pause
exit /b 0
)
echo 正在提交内容变更...
git commit -m "auto push %date% %time:~0,5%"
if errorlevel 1 (
echo 错误:提交失败
pause
exit /b 1
)
echo 正在推送到 GitHub...
git push
if errorlevel 1 (
echo 错误:推送失败
pause
exit /b 1
)
echo 成功!已推送到 GitHub
pause
exit /b 0这个版本会:
- 检查
git status是否有改动 - 排除
public/目录(Hugo 构建产物,通常不需要提交) - 分支判断,输出不同的中文提示
- 每个分支都有
pause,确保你能看清执行结果
五、创建桌面快捷方式#
为了更方便,可以创建一个桌面快捷方式:
- 右键桌面 → 新建 → 快捷方式
- 对象位置填:
cmd.exe /c "C:\你的博客路径\push-now.bat" - 命名为"推送博客"
- 右键快捷方式 → 属性 → 更改图标,选个顺眼的
以后双击桌面图标就能一键推送了!
六、常见问题#
Q:双击脚本闪退,看不到执行结果?
A:脚本末尾缺少 pause 命令,加上即可。
Q:提示"系统找不到指定的路径"?
A:检查 cd /d 后的路径是否正确,路径有空格要用双引号包裹。
Q:中文显示乱码怎么办?
A:确保 .bat 文件用 GBK/ANSI 编码保存(见本文第三节)。
Q:提示 git: command not found?
A:Git 未安装或未添加到环境变量 PATH,参考 Windows 10 从零搭建 Hugo 博客 安装 Git。
Q:推送时提示需要登录 GitHub? A:配置 Git 用户名和邮箱,或使用 Personal Access Token/SSH Key 认证。
总结#
创建一个简单的批处理脚本:
编写 push-now.bat(GBK 编码)
↓
放到 Hugo 博客根目录
↓
双击运行 → 自动执行 add + commit + push
↓
Cloudflare Pages 自动部署
↓
博客更新完成!从此告别手动敲命令,写作 → 双击推送 → 自动上线,效率拉满!