yi_Xu
菜单
置顶

编写 bat 批处理脚本文件来设置自动推送

现在整个网站是部署在阿里云上的,但基础代码还是放在 github 上,这样通过 github 的 webhook 可以实现自动推送,但是本地生成的文件还是需要几步更新,推送到 github 的上的,所以写了一个脚本来进行,最后一步的生成和推送。

注意:bat 批处理脚本在 《通过复制 git 信息提交网站更新 commit》 中完成了新的更新配置,以便将每次的更新记录在 github commit 信息中。

 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
@echo off
set pan=.\public\
set repo=https://github.com/yi-Xu-0100/www.yixuju.cn.git
set branch=master
if exist %pan% (
    echo "清除 public 文件夹"
    rd /S /Q %pan%
    echo "重新执行Hugo命令生成站点"
    hugo
) else (
    echo "未发现 public 文件夹"
    echo "重新执行 Hugo 命令生成站点"
    hugo
)
if exist %pan% (
    cd %pan%
    echo "初始化 git"
    git init
    git add --all
    git commit -m "update site at %time%"
    echo "设置远程库并推送"
    git remote add origin %repo%
    git push -f origin master:master -v
) else (
    echo "未找到 public 文件夹,疑似 hugo 命令未成功!"
)
pause

一些说明

这个脚本运行可能会碰到一些问题,本质上说,需要一定的条件:

  • 完成免密码与 github 链接。
  • 脚本中的路径需要自己修改设置。
  • 仅支持 windows 系统。【 win10 系统测试通过】

提供英文版以消除编码方式影响

考虑到站点源文件统一使用 UTF-8 编码方式,而 windows 默认编码方式为 gbk ,造成中文在 cmd 中和编辑器中总有一个显示不正确,所以将脚本中文字替换成英文,以避免编码方式的影响。

 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
@echo off
set pan=.\public\
set repo=git@github.com:yi-Xu-0100/www.yixuju.cn.git
set branch=master
if exist %pan% (
    echo "clean public directory"
    rd /S /Q %pan%
    echo "Hugo again for new site"
    hugo
) else (
    echo "can not find public directory"
    echo "Hugo again for new site"
    hugo
)
if exist %pan% (
    cd %pan%
    echo "git init and commit"
    git init
    git add --all
    git commit -m "update site at %time%"
    echo "set remote repository and push forcely"
    git remote add origin %repo%
    git push -f origin master:master -v
) else (
    echo "can not find public directory, hugo fail!"
)
pause