17370845950

Hexo,使用bat脚本部署文章

写在前面

熟悉Hexo的朋友都知道,撰写的Markdown文章应当放置在Hexo安装目录的

source/_posts
文件夹中,然后使用命令
hexo g -d
hexo d -g
进行部署。我在使用Hexo时,
_posts
目录实际上是关联到我的一个远程Github仓库的。我习惯使用小书匠这款编辑器来编写MD文章(主要是因为它可以关联多个平台的图床服务),写完后可以直接保存到这个远程仓库中。按照之前的方式,我首先需要在
_posts
目录中
pull
最新的文章,然后再使用
hexo g -d
命令来部署。坦白说,我承认自己是个懒人,以前也尝试过用Travis CI来解决Hexo的自动化部署问题,但总是在某个步骤卡住,现在也就搁置了。如果以后成功解决,我会再写一篇文章。今天的主题是使用bat脚本来部署文章,在那之前,我们先了解一下bat脚本。

关于bat

bat是Windows平台下的一种脚本语言,类似于Linux平台下的shell。下面只是举几个简单的例子,点到为止就好,更多关于bat脚本的语法可以查看这里。

语法 解释
echo 表示打印该命令后的字符,如@@######@@执行后会打印“hello”
echo off 表示在此语句后所有运行的命令都不显示命令本身,但本身会显示
@ 与@@######@@类似,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)
@echo off 组合上两个语法,表示不显示后续执行命令及当前命令
dir c:*.* >a.txt 将c盘文件列表写入a.txt
call 用于调用另一个批处理命令或文件(如果不用@@######@@而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)
call c:\ucdos\ucdos.bat 调用ucdos.bat脚本
pause 暂停批处理的执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续
rem 用于注释,也可以用 @@######@@代替
start 调起另外一个窗口执行当前行命令

实战部署

下面贴出的这段代码,也是我用来部署Hexo文章的bat脚本(在Hexo安装目录下新建

echo hello
,拷贝代码,每次双击运行即可),用Sublime查看会比较清晰一点。

echo off

hexo-deploy.bat

写在最后

好的工具都是为了提高效率而生的,后续本人可能需要维护多个平台的文章发布,因此计划使用Python编写一些自动化发布文章的脚本,然后再结合bat脚本进行调用,感兴趣的小伙伴欢迎继续关注!

参考文章

call
::
deploy.bat
:: 左边的两个冒号和rem的效果是类似的,都是注释的作用
:: 下面这段代码已经注释,如果去掉rem,那么包含echo off本身和后面的call命令都不会再打印
rem @echo off
:: call表示在当前窗口执行后面的命令或调用其它脚本
call cd source/_posts
git pull origin master
cd ../../
hexo g -d