想法初衷 通过Windows的bat脚本一键化对hexo执行部署打包等相关命令
脚本代码 一键运行hexo n
在vscode中进行编辑,编辑完成后直接处理图片前缀 后部署本地环境预览后发布
:: 防止中文乱码 chcp 65001 :: 不打印其他命令的回显(放在'@echo off'上此注释会被输出到控制台) @echo off :: 初始化参数配置 set BlogPath=D:\workSpace\Hexo\blog echo 博客目录:%BlogPath% set CopyFrom=D:\workSpace\Hexo\blog\source\_posts\ echo 复制目录:%CopyFrom% set ParseTo=D:\workSpace\Vscode\ echo 粘贴目录:%ParseTo% :: 配合'goto begin'回到此处重复执行操作 :: :begin :: 获取输入 set input= set /p input=请输入新增页面名称: :: 去除输入的所有空格(因为空格会导致hexo n创建新页面失败) set "input=%input: =%" :: 打印用户输入参数 echo %input% :: 执行cmd命令(cmd /c 表示执行完毕后关闭窗口) start cmd /c "cd/d %BlogPath% && hexo n '%input%' " :: 等待最长5s继续往下执行操作(原因:需要等待 hexo n 的文件创建好,然后执行复制操作!) :: timeout /t 5 /nobreak > NUL :: 复制创建文件到vscode工作目录下 :: copy %CopyFrom%%input%.md %ParseTo% :: 创建空文件夹 :: md %ParseTo%%input% :: 可配合':begin'进行重复执行操作 :: goto begin :: 暂停 :: pause :: 退出关闭窗口 exit
一键运行hexo s
:: 防止中文乱码 chcp 65001 @echo off :: 获取最新代码(关闭自动更新) :: start cmd /c "cd/d D:\workSpace\Blog\blog\themes\butterfly && git pull " :: 清空public打包目录/打包资源/本地部署 start cmd /k "cd/d D:\workSpace\Hexo\blog && hexo clean && hexo g && hexo s"
一键部署github pages
原文件的编辑更新代码提交giteee
信息规范即可,提交到github pages
仓库部署的页面可随意。
:: 防止中文乱码 chcp 65001 @echo off :: 初始化参数配置 set BlogDeployPath=D:\workSpace\Hexo\blog\.deploy\ODUODUOKE.github.io set HexoPublicPath=D:\workSpace\Hexo\blog\public set delBatName=del.bat :: start cmd /c "cd/d %BlogDeployPath% && call %delBatName%" :: timeout /t 5 /nobreak start cmd /c "robocopy.exe %HexoPublicPath% %BlogDeployPath% /E /COPY:DAT /DCOPY:T" timeout /t 5 /nobreak start cmd /c "cd/d %BlogDeployPath% && git add . && git commit -m "update" && git push origin main && call %delBatName%"
提交推送 vscode编辑的原文件及资源,我提交的gitee
hexo打包的部署页面这个提交是github pages
vscode下文件提交git 安装git插件,直接在vscode中将相关文件提交至仓库
hexo下部署文件提交git 通过脚本推送部署,不需要人工干预
TODO 后续期望是通过一键脚本启动完服务后,通过curl
监听到指定端口地址访问状态正常,然后启动浏览器(无需人工启动浏览器进行预览)。
其他 一键部署github pages
注意事项
.gitgnore文件内容如下:
del.bat 脚本命令代码 :: 防止中文乱码 chcp 65001 @echo off :: 设置保护目录、文件参数配置 set defendDirName01=.git set defendBatSelf01=del.bat set defendBatSelf02=.gitignore for /D %%i in (*) DO ( if not %%i==%defendDirName01% ( if not %%i==保留文件夹02(示例) ( rem echo 删文件夹:%%i rd /S /Q %%i ) ) ) for %%i in (*) DO ( if not %%i==%defendBatSelf01% ( if not %%i==%defendBatSelf02% ( rem echo 删除文件:%%i del %%i ) ) )
参考资料 bat批处理脚本中文乱码问题解决
.Bat之批处理实现手动输入变量参数
使用bat脚本自动打开cmd并执行命令
写一个打开cmd窗口并执行cmd命令的Windows脚本(.bat文件)
bat文件命令行去除变量的空格
Bat 等待一段指定的时间
Windows copy命令
bat 复制文件和文件夹(目录
BAT —- 删除部分文件和文件夹,仅保留指定文件、和文件夹
curl http_code 状态码
windows下bat脚本监听http服务
Curl学习日记2 - 在Windows CMD命令行中使用Curl
未使用,但是觉得以后会涉及,于是记录下来
在批处理(cmd,bat)下传递参数和获取参数
robocopy 的使用教程忘记留存链接下来了。
原本使用xcopy,经过测试发现复制过来的文件和原目录的文件里面多出来一个page文件夹和一个content.json (应该使我哪里步骤有问题导致的)。
备注: 如果复制到的目录下存在.git
目录,文件会自动暂存区,导致我明明把目录下文件删除了,然后执行脚本复制好几次都失败!当时使用的xcopy
,它输出日志100%copyied ,然后实际目录下是空的。