引言

这篇文章是主角是使用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 调起另外一个窗口执行当前行命令

实战脚本

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
@echo off
cls
set blogname=""
:列表选择
@echo off
set Author=作者:竹山一叶
@title Hexo博客工具-%Author%
@PROMPT
@color b
cls
echo.
echo.
echo.
echo 1 初始化博客
echo 2 启动博客预览
echo 3 生成博客页面
echo 4 发布部署博客
echo 5 生成和发布博客
echo 6 新增文章
echo 7 新增页面

echo -------------------------------------------------------------------------
echo 直接回车=刷新 输入Q回车=退出
@set option=""
@set /p option=
if /I "%option%"=="1" goto init
if /I "%option%"=="2" goto server
if /I "%option%"=="3" goto generate
if /I "%option%"=="4" goto deploy
if /I "%option%"=="5" goto generatedeploy
if /I "%option%"=="6" goto newpost
if /I "%option%"=="7" goto newpage
if /I "%option%"=="q" (exit)
goto 列表选择

:init
cls
echo ----------------------------初始化博客---------------------------->nul
@set /p blogname=请输入博客目录的名称:
if exist %blogname% goto blogexist
echo 开始初始化博客「%blogname%
call hexo init %blogname%
echo 初始化博客「%blogname%」已完成
call cd %blogname%
echo 开始初始化博客「%blogname%」环境
call npm install
:blogexist
echo 指定博客「%blogname%」目录已经存在
echo.
echo 初始化博客环境「%blogname%」已完成
echo.
echo 初始化博客已经完成,按下任意键后进入功能选择列表
pause
goto 列表选择

:server
@echo off
cls
echo ----------------------------启动博客预览---------------------------->nul
if "" == %blogname% (
set /p blogname=请输入博客目录的名称:
)
cd %blogname%
start hexo server
echo.
@cd %~dp0
echo 按下任意键后进入功能选择列表
pause
goto 列表选择

:generate
@echo off
cls
echo ----------------------------生成博客页面---------------------------->nul
if "" == %blogname% (
set /p blogname=请输入博客目录的名称:
)
cd %blogname%
call hexo generate
echo.
@cd %~dp0
echo 按下任意键后进入功能选择列表
pause
goto 列表选择

:deploy
@echo off
cls
echo ----------------------------发布部署博客---------------------------->nul
if "" == %blogname% (
set /p blogname=请输入博客目录的名称:
)
cd %blogname%
call hexo deploy
echo.
@cd %~dp0
echo 按下任意键后进入功能选择列表
pause
goto 列表选择

:generatedeploy
@echo off
cls
echo ----------------------------生成和发布博客---------------------------->nul
if "" == %blogname% (
set /p blogname=请输入博客目录的名称:
)
cd %blogname%
call hexo clean
call hexo generate
call hexo deploy
echo.
@cd %~dp0
echo 按下任意键后进入功能选择列表
pause
goto 列表选择

:newpost
@echo off
cls
echo ----------------------------新增文章---------------------------->nul
if "" == %blogname% (
set /p blogname=请输入博客目录的名称:
)
cd %blogname%
set /p postname=请输入文章的目录和文件名称:
set /p titlename=请输入文章的标题:
call hexo new -p %postname% "%titlename%"
echo.
@cd %~dp0
echo 按下任意键后进入功能选择列表
pause
goto 列表选择

:newpage
@echo off
cls
echo ----------------------------新增页面---------------------------->nul
if "" == %blogname% (
set /p blogname=请输入博客目录的名称:
)
cd %blogname%
set /p pagename=请输入页面的目录和文件名称:
set /p titlename=请输入页面的标题:
call hexo new page --path %pagename% "%titlename%"
echo.
@cd %~dp0
echo 按下任意键后进入功能选择列表
pause
goto 列表选择

批处理命令详解

Windows Batch Scripting