这段时间在搞hexo博客

因为要本地编写、测试、上传博客,每次都要打代码,我嫌麻烦打算写个bat脚本来一键完成。

Part.0 创建脚本(基础须知,可跳转到 ###Part.1)

先创建一个文本文档,将文件后缀名改为.bat,右键打开编辑。
@echo off@是不显示当前行命令,echo off是不显示下述命令。
::或REM 空格后加注释,注意换行
pause暂停,输入任意值继续。

setset 命令定义变量.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