写在前面
熟悉Hexo的朋友都知道,写好的Markdown文章应该放到hexo安装目录的source\_posts
文件夹下,然后使用命令hexo g -d
或者是hexo d -g
进行部署。我在使用Hexo的时候,_post
目录其实是关联了我的一个远程Github仓库,我习惯于用小书匠这款编辑器来写MD文章(主要是因为小书匠可以关联使用多个平台的图床服务),写好后也可以直接保存到这个远程仓库中。按以前那种方式,我首先需要在_post
目录中pull
最新的文章,然后再使用hexo g -d
命令来部署。老实说,我承认自己是个懒人,之前也捣腾过用Travis CI来解决hexo自动化部署的问题,但就是一直卡在某一步,然后现在也就搁置了,下来如果弄成功了我会再写一篇文章。今天这篇文章是主角是使用bat脚本来部署文章,在那之前我们先了解一下bat。
关于bat
bat是Windows平台下的一种脚本语言,类似于Linux平台下是shell。下面只是举几个简单的例子,点到为止就好,更多关于bat脚本的语法可以查看这里。
语法 | 解释 |
---|---|
echo | 表示打印该命令后的字符,如echo hello 执行后会打印“hello” |
echo off | 表示在此语句后所有运行的命令都不显示命令本身 ,但本身会显示 |
@ | 与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行) |
@echo off | 组合上两个语法,表示不显示后续执行命令及当前命令 |
dir c:*.* >a.txt | 将c盘文件列表写入a.txt |
call | 用于调用另一个批处理命令或文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令) |
call c:\ucdos\ucdos.bat | 调用ucdos.bat脚本 |
pause | 暂停批处理的执行并在屏幕上显示Press any key to continue... 的提示,等待用户按任意键后继续 |
rem | 用于注释,也可以用 :: 代替 |
start | 调起另外一个窗口执行当前行命令 |
实战部署
下面贴出的这段代码,也是我用来部署hexo文章的bat脚本(在hexo安装目录下新建deploy.bat
,拷贝代码,每次双击运行即可),用Sublime看会比较清晰一点。
:: 左边的两个冒号和rem的效果是类似的,都是注释的作用
:: 下面这段代码已经注释,如果去掉rem,那么包含echo off本身和后面的call命令都不会再打印
rem @echo off
:: call表示在当前窗口执行后面的命令或调用其它脚本
call cd source/_posts
git pull origin master
cd ../../
hexo g -d
写在最后
所谓好的工具都是为了提高效率而生的,后续本人可能要维护多个平台的文章发表,所以计划用Python写一些自动化发布文章的脚本,然后再结合bat脚本进行调用,感兴趣的小伙伴欢迎继续关注!