这段时间在搞hexo博客
因为要本地编写、测试、上传博客,每次都要打代码,我嫌麻烦打算写个bat脚本来一键完成。
Part.0 创建脚本(基础须知,可跳转到 ###Part.1)
先创建一个文本文档,将文件后缀名改为.bat,右键打开编辑。
@echo off
@是不显示当前行命令,echo off是不显示下述命令。
::或REM
空格后加注释,注意换行。
pause
暂停,输入任意值继续。
set
set 命令定义变量.eg:set var=value
,这里 var 是变量名,value 是变量的值。
setlocal enabledelayedexpansion
当变量的值在循环中可能会发生变化时,需要开启延迟变量扩展,用!var!
的形式访问变量。
%
访问变量的值需要用 % 括起来,eg:echo %var%
会在命令提示符窗口输出变量 var 的值。
echo
用于在命令提示符窗口输出文本信息。
mkdir
用于创建目录。eg:mkdir new folder
会在当前目录下创建一个名为 new folder 的新文件夹。
cd
切换目录。cd new folder
会进入刚刚创建的 new folder 目录;cd..
可以返回上一级目录。
dir
列出目录中的文件和子目录。dir 命令会显示当前目录下的内容,dir /s
可以递归列出当前目录及其所有子目录下的内容。
explorer
可以打开路径(”文件路径”),直接后加 /select,文件路径
可选中文件
start
命令
用法:start [“title”] [parameters] “program name” [command line parameters]
其中:
“title”是可选的,是要启动的窗口的标题。
parameters也是可选的,指定窗口的大小、状态等。eg:/min
表示以最小化窗口启动,/max
表示以最大化窗口启动。
“program name”要启动的程序的名称或可执行文件的路径。如果路径包含空格,同样需要用双引号括起来。eg:start “C:\Program Files\Microsoft Office\Excel.exe”
会启动 Excel 程序。(双引号不可省略)
command - line parameters传递给程序的命令行参数。比如你有一个网址,想用edge打开 eg:start "Edge" "https://www.baidu.com"
剩下的可以问AI,
Part.1 写个博客
@hexo new "new"&&explorer.exe /select,C:\Users\Admin\Desktop\hexo\source\_posts\new.md
解释:先用hexo创建一个名为new的文件,在打开并选中该文件,**不实现自动改名是因为我试了半天都实现不了,连键入F2都不行**
Part.2 本地测试博客
hexo clean&&start "Edge" "http://localhost:4000"&&hexo s
解释:先清理缓存,用edge打开本地端口,再开启本地博客服务,因为代码是从前向后运行,所以顺序不可改,先运行hexo s
会导致无法自动打开浏览器
Part.3 上传博客
hexo clean&&hexo generate&&hexo deploy&&pause
解释:pause
的作用是在正常上传博客之后,留有一个任意键的窗口,从而知晓博客正常上传与否
保存为bat,你就获得的自动化脚本
另外,part·1中废稿粘在下面,希望有人可以解疑———为什么它无法正常运行
点击展开完整代码(batch)
@echo off
setlocal enabledelayedexpansion
echo 正在创建新的Hexo博客文章...
call hexo new "new_blog"
if errorlevel 1 (
echo 错误: 创建博客文章失败
echo 请确保:
echo 1. Hexo已正确安装
echo 2. 当前目录是Hexo博客根目录
pause
exit /b 1
)
set "postPath=C:\Users\Admin\Desktop\hexo\source\_posts\"
set "oldFileName=new_blog.md"
rem 检查文章目录是否存在
if not exist "!postPath!" (
echo 错误: 文章目录不存在: !postPath!
echo 请检查路径是否正确
pause
exit /b 1
)
echo.
echo 请输入新的文件名(不含扩展名),直接回车将保持原文件名:
set /p "newName="
if "!newName!"=="" (
echo 保持原文件名: new_blog.md
set "finalFileName=!oldFileName!"
) else (
echo 正在将文件重命名为: !newName!.md
rem 检查原文件是否存在
if not exist "!postPath!!oldFileName!" (
echo 错误: 原文件 !postPath!!oldFileName! 不存在
echo 请检查Hexo是否成功创建了文章
pause
exit /b 1
)
rem 执行重命名操作
ren "!postPath!!oldFileName!" "!newName!.md"
if errorlevel 1 (
echo 错误: 重命名文件失败
echo 可能的原因:
echo 1. 新文件名包含非法字符
echo 2. 已存在同名文件
echo 3. 没有足够的权限
pause
exit /b 1
)
set "finalFileName=!newName!.md"
)
echo 博客文章创建完成: !finalFileName!
rem 打开文件
if exist "!postPath!!finalFileName!" (
echo 正在打开文件...
start "" "!postPath!!finalFileName!"
) else (
echo 警告: 文件 !postPath!!finalFileName! 不存在,无法打开
)
echo.
echo 按任意键退出...
pause >nul