文章目录
  1. 1. 批处理文件
  2. 2. 参考资料
  3. 3. 原文链接

用 Hexo 老要在 Bash 里输入命令,挺麻烦的所以自己作了一个批处理文件,方便自己使用。

为了弄出这个东西,也鼓捣了好一阵,看了好多批处理方面的文章,后来弄出来以后发现其他都能用,就是遇到 deploy 的时候,就不行了。后来想到可能是在 cmd 命令行里无法用 Git 的缘故,又研究了半天。

后来又增加了新建文章、新建草稿,发布草稿的功能。

其中发布草稿的功能颇费了一番心思。

把批处理文件发出来,大家交流一下把,也请指正。

批处理文件

批处理文件如下:

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
@echo off & rem 关闭显示命令
title Hexo & rem 设置
setlocal enabledelayedexpansion & REM 启用延迟环境变量扩展,从而可以使用类似 !var! 这样的低优先级变量,实现变量嵌套。
rem ===============
rem 这是一个用于 Hexo 的批处理。
rem 使用前请先把 Git 安装目录下的 "\bin" 目录 和 "\libexec\git-core" 目录加入环境变量使得在 CMD 命令行下可以使用 Git 命令。
rem 还需要复制 ~/.ssh 目录到 Git 的安装目录下(比如"C:\Program Files (x86)\Git"),使得 CMD 命令行可以访问 SSH密钥。
rem ===============
rem 选择操作开始
:Start
cls
echo.
echo.
echo ==============================================
echo = =
echo = 请选择需要的操作 =
echo = 1.启动Hexo本地服务器 =
echo = 2.生成 =
echo = 3.部署 =
echo = 4.生成并部署 =
echo = 5.清除临时文件 =
echo = 6.新建文章 =
echo = 7.新建草稿 =
echo = 8.发布草稿 =
echo = 9.退出 =
echo = =
echo = BY:吕旭(lvxu1987@gmail.com) =
echo ==============================================
echo 请输入您的选择

set /p Choice=

if "%Choice%"=="1" goto server
if "%Choice%"=="2" goto generate
if "%Choice%"=="3" goto deploy
if "%Choice%"=="4" goto generate_deploy
if "%Choice%"=="5" goto clean
if "%Choice%"=="6" goto new
if "%Choice%"=="7" goto new_draft
if "%Choice%"=="8" goto publish_draft
if "%Choice%"=="9" goto end
goto Input_Error
rem 选择操作结束

rem 启动Hexo本地服务器开始
:server
cls
echo.
echo.
echo ==============================================
echo = =
echo = 请选择服务器启动方式的操作 =
echo = 1.标准启动 =
echo = 2.设置端口 =
echo = 3.静态启动(只显示public文件夹) =
echo = 4.包括草稿 =
echo = 5.返回 =
echo = =
echo = =
echo = =
echo = =
echo = =
echo = BY:吕旭(lvxu1987@gmail.com) =
echo ==============================================
echo 请选择

set /p Choice=
if "%Choice%"=="1" hexo server
if "%Choice%"=="2" goto Server_Port
if "%Choice%"=="3" hexo server -s
if "%Choice%"=="4" hexo server --drafts
if "%Choice%"=="5" goto Start
goto server
rem 启动Hexo本地服务器结束

rem 启动非4000端口服务器
:Server_Port
set /p port=请输入端口号:
hexo server -p %port%
goto server

rem 生成静态文件开始
:generate
hexo generate
pause
goto Start
rem 生成静态文件结束

rem 部署到服务器开始
:deploy
hexo deploy
pause
goto Start
rem 部署到服务器结束

rem 生成并部署开始
:generate_deploy
hexo generate --deploy
pause
goto Start
rem 生成并部署结束

rem 清除临时文件开始
:clean
hexo clean
pause
goto Start
rem 清除临时文件结束

rem 生成新文章开始
:new
echo 请输入新文章的标题
set /p post_title=
hexo new post "%post_title%"
pause
goto Start
rem 生成新文章结束

rem 生成新草稿开始
:new_draft
echo 请输入新草稿的标题
set /p draft_title=
hexo new draft "%draft_title%"
pause
goto Start
rem 生成新草稿结束

rem 发布新草稿开始
:publish_draft
dir "source\_drafts" /b > list_exp _exp & rem 输出草稿文件夹中的所有草稿的文件名到 list_exp 里(包含扩展名)
cd. >list & rem 清空 list 文件的内容,防止存在 list 文件导致错误(直接删除的话如果不存在list文件会出错)
for /f "delims=" %%i in (list_exp) do (echo.%%i>>list) & rem 将 list_exp 中非空行的内容输出到 list文件里
set /a sequence=1 & rem 设置顺序代号变量为 1
for /f %%i in (list) do call :echo_list %%i & rem 为list 中的每一行内容调用 echo_list 函数
echo 您希望发布哪篇草稿?
set /p Choice= & rem 选择要发布的草稿
for /l %%i in (1,1,%sequence%-1) do (
if "%Choice%"=="%%i" set draft_name=!draft_name%%i!
) & rem 将被选中的草稿的文件名赋值给 "draft_name" 参数
echo 您希望提交的草稿是:%draft_name%
call :no_ext %draft_name% & rem 删除草稿文件名的后缀名
del list & rem 删除临时文件
del list_exp & rem 删除临时文件
hexo publish post "%draft_name_no_ext%" & rem 发布草稿
pause
goto Start
rem 发布新草稿结束

rem 输入错误时回到菜单
:Input_Error
echo 输入错误,请重新选择
goto Start

rem 退出批处理
:end
pause

rem "no_ext" 函数的作用是去除文件名中的扩展名,因为经测试必须不包括扩展名时 "hexo publish post" 命令才会生效
:no_ext
set draft_name_no_ext=%~n1
goto :eof & rem 函数结束标志

rem 该函数的作用是输出 list 文件夹里每一个文件名并将其编号
:echo_list
echo 草稿%sequence% : %1 & rem 显示草稿序号和文件名
set draft_name%sequence%=%1 & rem 将文件名赋值给 draft_name+序列号
set /a sequence=%sequence%+1 & rem 序列号+1
goto :eof & rem 函数结束标志

单击这里 可以下载批处理源文件。

参考资料

1.Windows下配置Git

2.git/ssh捋不清的几个问题

3.Windows Cmd SSH key 问题

4.批处理如何提取文件位置和文件名 不包括后缀

5.批处理通过字符串截取得到文件名

6.批处理脚本高级编程技巧——变量嵌套

7.批处理怎么删除文件里的空行和含指定内容的行?

8.Bat 批处理之 for/f 详解

原文链接

转载请注明原文地址:http://t.cn/RA4BPda

文章目录
  1. 1. 批处理文件
  2. 2. 参考资料
  3. 3. 原文链接