Files
rime-sync-config/bat/autosync.bat
T

65 lines
1.7 KiB
Batchfile
Raw Normal View History

2026-01-20 06:36:26 +00:00
@echo off
setlocal enabledelayedexpansion
::定时同步,如果空闲时间超过30分钟,就同步,否则就什么都不执行
set "SCRIPT_DIR=%~dp0"
set "LOG=%SCRIPT_DIR%autosync.log"
set "PS1=%SCRIPT_DIR%get_idle_minutes.ps1"
:: 检查 PowerShell 脚本是否存在
if not exist "%PS1%" (
echo 错误:缺少 get_idle_minutes.ps1
exit /b 1
)
:: 调用 PowerShell 获取空闲分钟数
for /f "delims=" %%i in ('powershell -ExecutionPolicy Bypass -File "%PS1%" 2^>nul') do (
set "idle_min=%%i"
)
:: 验证是否获取到数字
set "is_number=0"
for /f "delims=0123456789" %%a in ("%idle_min%") do set "is_number=1"
if %is_number% equ 1 (
echo [%date% %time%] 无法获取空闲时间,跳过。 >> "%LOG%"
exit /b
)
:: 记录日志
echo [%date% %time%] 空闲时间: %idle_min% 分钟 >> "%LOG%"
:: 判断是否 ≥30 分钟
if %idle_min% GEQ 30 (
echo [%date% %time%] 满足条件,开始同步... >> "%LOG%"
:: === 你的同步命令 ===
:: 注册表路径
set "regKey=HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Weasel"
:: 读取 UninstallString 值
for /f "tokens=2*" %%a in ('reg query "%regKey%" /v "UninstallString" 2^>nul ^| findstr /i "UninstallString"') do (
set "uninstallCmd=%%b"
)
:: 检查是否找到
if not defined uninstallCmd (
echo 错误:未找到小狼毫(Weasel)的注册表项。
pause
exit /b 1
)
:: 去掉开头和结尾的引号
call set "clean=%%uninstallCmd:"=%%"
:: 获取上层目录(父目录)
for %%I in ("%clean%") do set "apppath=%%~dpI"
:: 同步
"%apppath%WeaselDeployer.exe" /sync
:: 暂停30秒,给出同步时间
timeout /t 30 /nobreak >nul
:: 同步后重新部署
"%apppath%WeaselDeployer.exe" /deploy
echo [%date% %time%] 同步完成。 >> "%LOG%"
) else (
echo [%date% %time%] 未满足空闲条件,跳过。 >> "%LOG%"
)