将以下脚本复制保存为 syAutoBak.bat
文本文件 (文件名随意) 即可
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
:: 设置默认值 inputDir 输入目录 outputDir 输出目录
set "inputDir=%USERPROFILE%\SiYuan\data"
set "outputDir=D:\sybackup"
:: 解析命令行参数
:parse_args
if "%~1"=="" goto :end_parse
if "%~1"=="-o" (
set "outputDir=%~2"
shift
)
if "%~1"=="-i" (
set "inputDir=%~2"
shift
)
shift
goto :parse_args
:end_parse
:: 显示使用的目录
echo inputDir : %inputDir%
echo outputDir: %outputDir%
:: 创建输出目录(如果不存在)
if not exist "%outputDir%" mkdir "%outputDir%"
:: 生成时间戳
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value') do set datetime=%%I
set timestamp=%datetime:~0,14%
:: 设置 ZIP 文件名
set "zipFile=%outputDir%\sydata-%timestamp%.zip"
:: 使用 PowerShell 压缩文件
:: powershell -command "Compress-Archive -Path'%inputDir%'-DestinationPath'%zipFile%'-CompressionLevel Fastest -Force"
powershell -command "Add-Type -AssemblyName System.IO.Compression.FileSystem; [System.IO.Compression.ZipFile]::CreateFromDirectory('%inputDir%','%zipFile%', [System.IO.Compression.CompressionLevel]::Fastest, $false)"
if %errorlevel% equ 0 (echo 备份成功完成:%zipFile%) else (echo 备份过程中发生错误。)
endlocal
然后按 win + R 输入 taskschd.msc
打开计划任务管理器,创建基本任务,设置为每天某个时间出发,执行刚刚保存的脚本即可
参数 (可选) 可设置 -o D:\mybackup
即表示设置备份路径为 D:\mybackup
,如果不设置则默认是 D:\sybackup
。-i D:\mydata
则为重设要压缩的路径,如不设置默认是 C:\Users\XXX\SiYuan\data
恢复也简单,解压备份文件放到 ...\SiYuan\data
中目录即可