初始化bat文件
This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
::获取输入程序所在目录(通过注册表中的卸载路径)
|
||||
:: 注册表路径
|
||||
set "regKeOFUninstall=HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Weasel"
|
||||
:: 读取 UninstallString 值
|
||||
for /f "tokens=2*" %%a in ('reg query "%regKeOFUninstall%" /v "UninstallString" 2^>nul ^| findstr /i "UninstallString"') do (
|
||||
set "uninstallCmd=%%b"
|
||||
)
|
||||
|
||||
:: 检查是否找到
|
||||
if not defined uninstallCmd (
|
||||
echo 错误:未找到小狼毫(Weasel)的注册表项。
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
::得到卸载程序目录
|
||||
echo %uninstallCmd%
|
||||
|
||||
:: 去掉开头和结尾的引号,得到的目录,首尾有双引号,需要去掉
|
||||
call set "clean=%%uninstallCmd:"=%%"
|
||||
|
||||
:: 提取所在的路径,也就是安装目录
|
||||
for %%I in ("%clean%") do set "apppath=%%~dpI"
|
||||
echo 输入法程序安装在%apppath%WeaselDeployer.exe
|
||||
|
||||
:: 找到用户文件夹路径,通过注册表中的路径
|
||||
set "regKeyOfUserDIR=HKCU\SOFTWARE\Rime\Weasel"
|
||||
:: 读取 RimeUserDir 的值
|
||||
for /f "tokens=2*" %%a in ('reg query "%regKeyOfUserDIR%" /v "RimeUserDir" 2^>nul ^| findstr /i "RimeUserDir"') do (
|
||||
set "rimeUserDir=%%b"
|
||||
)
|
||||
:: 检查是否成功读取
|
||||
if not defined rimeUserDir (
|
||||
echo 错误:未找到 RimeUserDir 注册表项。
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo 注册表读取的Rime用户目录: %rimeUserDir%
|
||||
:: 去掉开头和结尾的引号,得到的目录,首尾有双引号,需要去掉,去掉后得到的就是用户目录
|
||||
call set "userpath=%%rimeUserDir:"=%%"
|
||||
echo 获得的用户目录是:%userpath%
|
||||
|
||||
:: 获取当前批处理文件所在目录(结尾带反斜杠)
|
||||
set "CURRENT_DIR=%~dp0"
|
||||
:: 构建 autosync.bat 的完整路径,为了后续添加定时任务
|
||||
set "TARGET_SCRIPT=%CURRENT_DIR%autosync.bat"
|
||||
set "TARGET_VBS=%CURRENT_DIR%run_hidden.vbs"
|
||||
set "CMD=wscript.exe //nologo \"%CURRENT_DIR%run_hidden.vbs\" \"%CURRENT_DIR%autosync.bat\""
|
||||
:: 去掉末尾的反斜杠(便于处理)
|
||||
if "%CURRENT_DIR:~-1%"=="\" set "CURRENT_DIR=%CURRENT_DIR:~0,-1%"
|
||||
|
||||
:: 获取上层目录(父目录)
|
||||
for %%I in ("%CURRENT_DIR%") do set "PARENT_DIR=%%~dpI"
|
||||
:: 拼接config
|
||||
set "configpath=%PARENT_DIR%config"
|
||||
echo 获得的配置文件目录是:%configpath%
|
||||
call :link "custom_phrase.txt"
|
||||
call :link "default.custom.yaml"
|
||||
call :link "weasel.custom.yaml"
|
||||
call :link "weasel.yaml"
|
||||
call :link "default.yaml"
|
||||
pause
|
||||
echo 接下来重新部署输入法
|
||||
|
||||
if exist "%apppath%\WeaselDeployer.exe" (
|
||||
"%apppath%WeaselDeployer.exe" /deploy
|
||||
echo 部署功能应该已经启动,确定后按任意键退出.
|
||||
pause
|
||||
) else (
|
||||
echo 没有找到可执行程序,请检查目录后重试
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
:: 接下来设置定时任务
|
||||
echo 目标bat文件路径%TARGET_SCRIPT%
|
||||
|
||||
:: 检查 autosync.bat 是否存在
|
||||
if not exist "%TARGET_SCRIPT%" (
|
||||
echo 错误:未找到 %TARGET_SCRIPT%
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
echo 目标vbs文件路径%TARGET_VBS%
|
||||
|
||||
:: 检查 autosync.bat 是否存在
|
||||
if not exist "%TARGET_VBS%" (
|
||||
echo 错误:未找到 %TARGET_VBS%
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
:: 转义路径中的空格和特殊字符(用双引号包裹,并在 schtasks 中用 \" 转义)
|
||||
set "QUOTED_SCRIPT=\"%TARGET_SCRIPT%\""
|
||||
:: 任务名称
|
||||
set "TASK_NAME=RimeAutoSync"
|
||||
|
||||
:: 创建每10分钟运行一次的任务(从现在开始,每天重复)
|
||||
schtasks /create ^
|
||||
/tn "%TASK_NAME%" ^
|
||||
/tr "%CMD%" ^
|
||||
/sc minute ^
|
||||
/mo 10 ^
|
||||
/f
|
||||
|
||||
if %errorlevel% equ 0 (
|
||||
echo.
|
||||
echo 定时任务创建成功!
|
||||
echo - 任务名称: %TASK_NAME%
|
||||
echo - 执行频率: 每 10 分钟检查一次
|
||||
echo - 实际同步条件: 系统空闲 ≥30 分钟
|
||||
echo - 脚本路径: %CMD%
|
||||
echo.
|
||||
echo 注意:请确保 autosync.bat 与本脚本在同一目录。
|
||||
) else (
|
||||
echo 创建失败。建议以管理员身份运行(非必须,但可避免权限问题)。
|
||||
)
|
||||
|
||||
echo 任务创建成功,按任意键退出.
|
||||
pause
|
||||
goto :eof
|
||||
:: ================= 函数定义(用来创建文件软连接) =================
|
||||
:link
|
||||
set "filename=%~1"
|
||||
::设置软连链接
|
||||
echo 开始处理%filename%
|
||||
set "TARGET=%configpath%\%filename%"
|
||||
set "LINK=%userpath%\%filename%"
|
||||
echo 目标文件是:%TARGET%
|
||||
echo 软连接文件是:%LINK%
|
||||
if exist "%TARGET%" (
|
||||
echo 找到配置文件了%TARGET%
|
||||
) else (
|
||||
echo 配置目录下没有%filename%文件,请检查
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
if exist "%LINK%" (
|
||||
echo 文件 %LINK% 已经存在,创建软连接前会删除文件,请确保该文件已经备份,然后按回车键继续,否则,请关闭后备份。
|
||||
set /p "dummy="
|
||||
del "%LINK%"
|
||||
) else (
|
||||
echo 文件 %LINK% 不存在!
|
||||
)
|
||||
:: 前面如果用户已经按了回车,说明同意删除原来的文件,现在就可以创建文件软链接了
|
||||
mklink "%LINK%" "%TARGET%"
|
||||
goto :eof
|
||||
@@ -0,0 +1,65 @@
|
||||
@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%"
|
||||
)
|
||||
@@ -0,0 +1,204 @@
|
||||
[2026/01/19 周一 22:09:11.20] 空闲时间: 0 分钟
|
||||
[2026/01/19 周一 22:09:11.20] 未满足空闲条件,跳过。
|
||||
[2026/01/19 周一 22:12:20.73] 空闲时间: 0 分钟
|
||||
[2026/01/19 周一 22:12:20.73] 未满足空闲条件,跳过。
|
||||
[2026/01/19 周一 22:14:07.79] 空闲时间: 0 分钟
|
||||
[2026/01/19 周一 22:14:07.79] 未满足空闲条件,跳过。
|
||||
[2026/01/19 周一 22:16:02.07] 空闲时间: 0 分钟
|
||||
[2026/01/19 周一 22:16:02.08] 未满足空闲条件,跳过。
|
||||
[2026/01/19 周一 22:26:01.09] 空闲时间: 8 分钟
|
||||
[2026/01/19 周一 22:26:01.09] 未满足空闲条件,跳过。
|
||||
[2026/01/19 周一 22:36:01.09] 空闲时间: 5 分钟
|
||||
[2026/01/19 周一 22:36:01.09] 未满足空闲条件,跳过。
|
||||
[2026/01/19 周一 22:46:01.10] 空闲时间: 8 分钟
|
||||
[2026/01/19 周一 22:46:01.10] 未满足空闲条件,跳过。
|
||||
[2026/01/19 周一 22:56:01.11] 空闲时间: 18 分钟
|
||||
[2026/01/19 周一 22:56:01.11] 未满足空闲条件,跳过。
|
||||
[2026/01/19 周一 23:06:01.11] 空闲时间: 28 分钟
|
||||
[2026/01/19 周一 23:06:01.11] 未满足空闲条件,跳过。
|
||||
[2026/01/19 周一 23:16:01.12] 空闲时间: 38 分钟
|
||||
[2026/01/19 周一 23:16:01.12] 满足条件,开始同步...
|
||||
[2026/01/19 周一 23:26:01.14] 空闲时间: 48 分钟
|
||||
[2026/01/19 周一 23:26:01.14] 满足条件,开始同步...
|
||||
[2026/01/19 周一 23:36:01.16] 空闲时间: 58 分钟
|
||||
[2026/01/19 周一 23:36:01.16] 满足条件,开始同步...
|
||||
[2026/01/19 周一 23:46:01.15] 空闲时间: 68 分钟
|
||||
[2026/01/19 周一 23:46:01.15] 满足条件,开始同步...
|
||||
[2026/01/19 周一 23:56:01.15] 空闲时间: 78 分钟
|
||||
[2026/01/19 周一 23:56:01.15] 满足条件,开始同步...
|
||||
[2026/01/20 周二 0:06:01.17] 空闲时间: 88 分钟
|
||||
[2026/01/20 周二 0:06:01.17] 满足条件,开始同步...
|
||||
[2026/01/20 周二 0:16:01.17] 空闲时间: 98 分钟
|
||||
[2026/01/20 周二 0:16:01.17] 满足条件,开始同步...
|
||||
[2026/01/20 周二 0:26:01.19] 空闲时间: 108 分钟
|
||||
[2026/01/20 周二 0:26:01.19] 满足条件,开始同步...
|
||||
[2026/01/20 周二 0:36:01.17] 空闲时间: 118 分钟
|
||||
[2026/01/20 周二 0:36:01.17] 满足条件,开始同步...
|
||||
[2026/01/20 周二 0:46:01.27] 空闲时间: 3 分钟
|
||||
[2026/01/20 周二 0:46:01.27] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 0:56:02.36] 空闲时间: 13 分钟
|
||||
[2026/01/20 周二 0:56:02.36] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 1:06:02.25] 空闲时间: 23 分钟
|
||||
[2026/01/20 周二 1:06:02.25] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 1:16:02.39] 空闲时间: 33 分钟
|
||||
[2026/01/20 周二 1:16:02.39] 满足条件,开始同步...
|
||||
[2026/01/20 周二 1:26:02.22] 空闲时间: 43 分钟
|
||||
[2026/01/20 周二 1:26:02.22] 满足条件,开始同步...
|
||||
[2026/01/20 周二 1:36:02.30] 空闲时间: 53 分钟
|
||||
[2026/01/20 周二 1:36:02.30] 满足条件,开始同步...
|
||||
[2026/01/20 周二 1:46:02.27] 空闲时间: 63 分钟
|
||||
[2026/01/20 周二 1:46:02.27] 满足条件,开始同步...
|
||||
[2026/01/20 周二 1:56:02.56] 空闲时间: 73 分钟
|
||||
[2026/01/20 周二 1:56:02.56] 满足条件,开始同步...
|
||||
[2026/01/20 周二 2:06:02.35] 空闲时间: 83 分钟
|
||||
[2026/01/20 周二 2:06:02.35] 满足条件,开始同步...
|
||||
[2026/01/20 周二 2:16:02.63] 空闲时间: 93 分钟
|
||||
[2026/01/20 周二 2:16:02.63] 满足条件,开始同步...
|
||||
[2026/01/20 周二 2:26:02.24] 空闲时间: 103 分钟
|
||||
[2026/01/20 周二 2:26:02.24] 满足条件,开始同步...
|
||||
[2026/01/20 周二 2:36:02.19] 空闲时间: 113 分钟
|
||||
[2026/01/20 周二 2:36:02.20] 满足条件,开始同步...
|
||||
[2026/01/20 周二 2:46:02.26] 空闲时间: 123 分钟
|
||||
[2026/01/20 周二 2:46:02.26] 满足条件,开始同步...
|
||||
[2026/01/20 周二 2:56:02.01] 空闲时间: 133 分钟
|
||||
[2026/01/20 周二 2:56:02.01] 满足条件,开始同步...
|
||||
[2026/01/20 周二 3:06:01.28] 空闲时间: 143 分钟
|
||||
[2026/01/20 周二 3:06:01.28] 满足条件,开始同步...
|
||||
[2026/01/20 周二 3:16:01.29] 空闲时间: 153 分钟
|
||||
[2026/01/20 周二 3:16:01.29] 满足条件,开始同步...
|
||||
[2026/01/20 周二 3:26:01.31] 空闲时间: 163 分钟
|
||||
[2026/01/20 周二 3:26:01.31] 满足条件,开始同步...
|
||||
[2026/01/20 周二 3:36:01.31] 空闲时间: 173 分钟
|
||||
[2026/01/20 周二 3:36:01.31] 满足条件,开始同步...
|
||||
[2026/01/20 周二 3:46:01.32] 空闲时间: 183 分钟
|
||||
[2026/01/20 周二 3:46:01.32] 满足条件,开始同步...
|
||||
[2026/01/20 周二 3:56:01.33] 空闲时间: 193 分钟
|
||||
[2026/01/20 周二 3:56:01.33] 满足条件,开始同步...
|
||||
[2026/01/20 周二 4:06:01.34] 空闲时间: 203 分钟
|
||||
[2026/01/20 周二 4:06:01.34] 满足条件,开始同步...
|
||||
[2026/01/20 周二 4:16:01.35] 空闲时间: 213 分钟
|
||||
[2026/01/20 周二 4:16:01.35] 满足条件,开始同步...
|
||||
[2026/01/20 周二 4:26:01.36] 空闲时间: 223 分钟
|
||||
[2026/01/20 周二 4:26:01.36] 满足条件,开始同步...
|
||||
[2026/01/20 周二 4:36:01.36] 空闲时间: 233 分钟
|
||||
[2026/01/20 周二 4:36:01.36] 满足条件,开始同步...
|
||||
[2026/01/20 周二 4:46:01.37] 空闲时间: 243 分钟
|
||||
[2026/01/20 周二 4:46:01.37] 满足条件,开始同步...
|
||||
[2026/01/20 周二 4:56:01.37] 空闲时间: 253 分钟
|
||||
[2026/01/20 周二 4:56:01.37] 满足条件,开始同步...
|
||||
[2026/01/20 周二 5:06:01.38] 空闲时间: 263 分钟
|
||||
[2026/01/20 周二 5:06:01.38] 满足条件,开始同步...
|
||||
[2026/01/20 周二 5:16:01.39] 空闲时间: 273 分钟
|
||||
[2026/01/20 周二 5:16:01.39] 满足条件,开始同步...
|
||||
[2026/01/20 周二 5:26:01.41] 空闲时间: 283 分钟
|
||||
[2026/01/20 周二 5:26:01.41] 满足条件,开始同步...
|
||||
[2026/01/20 周二 5:36:01.40] 空闲时间: 293 分钟
|
||||
[2026/01/20 周二 5:36:01.40] 满足条件,开始同步...
|
||||
[2026/01/20 周二 5:46:01.42] 空闲时间: 303 分钟
|
||||
[2026/01/20 周二 5:46:01.42] 满足条件,开始同步...
|
||||
[2026/01/20 周二 5:56:01.42] 空闲时间: 313 分钟
|
||||
[2026/01/20 周二 5:56:01.42] 满足条件,开始同步...
|
||||
[2026/01/20 周二 6:06:01.42] 空闲时间: 323 分钟
|
||||
[2026/01/20 周二 6:06:01.42] 满足条件,开始同步...
|
||||
[2026/01/20 周二 6:16:01.43] 空闲时间: 333 分钟
|
||||
[2026/01/20 周二 6:16:01.43] 满足条件,开始同步...
|
||||
[2026/01/20 周二 6:26:01.44] 空闲时间: 343 分钟
|
||||
[2026/01/20 周二 6:26:01.44] 满足条件,开始同步...
|
||||
[2026/01/20 周二 6:36:01.45] 空闲时间: 353 分钟
|
||||
[2026/01/20 周二 6:36:01.45] 满足条件,开始同步...
|
||||
[2026/01/20 周二 6:46:01.45] 空闲时间: 363 分钟
|
||||
[2026/01/20 周二 6:46:01.45] 满足条件,开始同步...
|
||||
[2026/01/20 周二 6:56:01.57] 空闲时间: 373 分钟
|
||||
[2026/01/20 周二 6:56:01.57] 满足条件,开始同步...
|
||||
[2026/01/20 周二 7:06:01.47] 空闲时间: 383 分钟
|
||||
[2026/01/20 周二 7:06:01.47] 满足条件,开始同步...
|
||||
[2026/01/20 周二 7:16:01.48] 空闲时间: 393 分钟
|
||||
[2026/01/20 周二 7:16:01.48] 满足条件,开始同步...
|
||||
[2026/01/20 周二 7:26:01.49] 空闲时间: 403 分钟
|
||||
[2026/01/20 周二 7:26:01.49] 满足条件,开始同步...
|
||||
[2026/01/20 周二 7:36:01.51] 空闲时间: 0 分钟
|
||||
[2026/01/20 周二 7:36:01.52] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 7:46:01.52] 空闲时间: 7 分钟
|
||||
[2026/01/20 周二 7:46:01.52] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 7:56:01.51] 空闲时间: 17 分钟
|
||||
[2026/01/20 周二 7:56:01.51] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 8:06:01.52] 空闲时间: 27 分钟
|
||||
[2026/01/20 周二 8:06:01.52] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 8:16:01.51] 空闲时间: 37 分钟
|
||||
[2026/01/20 周二 8:16:01.51] 满足条件,开始同步...
|
||||
[2026/01/20 周二 8:26:00.53] 空闲时间: 0 分钟
|
||||
[2026/01/20 周二 8:26:00.54] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 8:36:00.53] 空闲时间: 0 分钟
|
||||
[2026/01/20 周二 8:36:00.53] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 8:46:00.54] 空闲时间: 9 分钟
|
||||
[2026/01/20 周二 8:46:00.54] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 8:56:00.55] 空闲时间: 19 分钟
|
||||
[2026/01/20 周二 8:56:00.55] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 9:06:01.02] 空闲时间: 29 分钟
|
||||
[2026/01/20 周二 9:06:01.02] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 9:16:00.61] 空闲时间: 0 分钟
|
||||
[2026/01/20 周二 9:16:00.61] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 9:26:00.56] 空闲时间: 0 分钟
|
||||
[2026/01/20 周二 9:26:00.57] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 9:36:00.60] 空闲时间: 0 分钟
|
||||
[2026/01/20 周二 9:36:00.60] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 9:46:01.28] 空闲时间: 0 分钟
|
||||
[2026/01/20 周二 9:46:01.28] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 9:56:00.61] 空闲时间: 0 分钟
|
||||
[2026/01/20 周二 9:56:00.61] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 10:06:00.64] 空闲时间: 0 分钟
|
||||
[2026/01/20 周二 10:06:00.64] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 10:16:00.63] 空闲时间: 0 分钟
|
||||
[2026/01/20 周二 10:16:00.63] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 10:26:01.29] 空闲时间: 8 分钟
|
||||
[2026/01/20 周二 10:26:01.29] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 10:36:00.82] 空闲时间: 18 分钟
|
||||
[2026/01/20 周二 10:36:00.82] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 10:46:00.84] 空闲时间: 28 分钟
|
||||
[2026/01/20 周二 10:46:00.84] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 10:56:00.81] 空闲时间: 38 分钟
|
||||
[2026/01/20 周二 10:56:00.81] 满足条件,开始同步...
|
||||
[2026/01/20 周二 11:06:00.80] 空闲时间: 48 分钟
|
||||
[2026/01/20 周二 11:06:00.80] 满足条件,开始同步...
|
||||
[2026/01/20 周二 11:16:00.86] 空闲时间: 58 分钟
|
||||
[2026/01/20 周二 11:16:00.86] 满足条件,开始同步...
|
||||
[2026/01/20 周二 11:26:00.88] 空闲时间: 0 分钟
|
||||
[2026/01/20 周二 11:26:00.88] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 11:36:00.84] 空闲时间: 4 分钟
|
||||
[2026/01/20 周二 11:36:00.84] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 11:46:00.69] 空闲时间: 14 分钟
|
||||
[2026/01/20 周二 11:46:00.69] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 11:56:00.79] 空闲时间: 0 分钟
|
||||
[2026/01/20 周二 11:56:00.79] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 12:06:00.81] 空闲时间: 0 分钟
|
||||
[2026/01/20 周二 12:06:00.81] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 12:16:00.78] 空闲时间: 0 分钟
|
||||
[2026/01/20 周二 12:16:00.78] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 12:26:00.72] 空闲时间: 9 分钟
|
||||
[2026/01/20 周二 12:26:00.72] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 12:36:00.85] 空闲时间: 0 分钟
|
||||
[2026/01/20 周二 12:36:00.85] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 12:46:00.85] 空闲时间: 0 分钟
|
||||
[2026/01/20 周二 12:46:00.85] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 12:56:00.86] 空闲时间: 0 分钟
|
||||
[2026/01/20 周二 12:56:00.86] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 13:06:00.84] 空闲时间: 2 分钟
|
||||
[2026/01/20 周二 13:06:00.84] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 13:16:00.76] 空闲时间: 9 分钟
|
||||
[2026/01/20 周二 13:16:00.76] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 13:26:00.76] 空闲时间: 19 分钟
|
||||
[2026/01/20 周二 13:26:00.76] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 13:36:00.77] 空闲时间: 29 分钟
|
||||
[2026/01/20 周二 13:36:00.77] 未满足空闲条件,跳过。
|
||||
[2026/01/20 周二 13:46:00.77] 空闲时间: 39 分钟
|
||||
[2026/01/20 周二 13:46:00.77] 满足条件,开始同步...
|
||||
[2026/01/20 周二 13:56:00.77] 空闲时间: 49 分钟
|
||||
[2026/01/20 周二 13:56:00.78] 满足条件,开始同步...
|
||||
[2026/01/20 周二 14:06:00.78] 空闲时间: 59 分钟
|
||||
[2026/01/20 周二 14:06:00.78] 满足条件,开始同步...
|
||||
[2026/01/20 周二 14:16:00.78] 空闲时间: 69 分钟
|
||||
[2026/01/20 周二 14:16:00.78] 满足条件,开始同步...
|
||||
[2026/01/20 周二 14:26:00.79] 空闲时间: 79 分钟
|
||||
[2026/01/20 周二 14:26:00.79] 满足条件,开始同步...
|
||||
[2026/01/20 周二 14:36:00.92] 空闲时间: 0 分钟
|
||||
[2026/01/20 周二 14:36:00.92] 未满足空闲条件,跳过。
|
||||
@@ -0,0 +1,27 @@
|
||||
# get_idle_minutes.ps1
|
||||
Add-Type @"
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
public class User32 {
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct LASTINPUTINFO {
|
||||
public uint cbSize;
|
||||
public uint dwTime;
|
||||
}
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
public static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
|
||||
}
|
||||
"@
|
||||
|
||||
$lii = New-Object User32+LASTINPUTINFO
|
||||
$lii.cbSize = [System.Runtime.InteropServices.Marshal]::SizeOf($lii)
|
||||
[User32]::GetLastInputInfo([ref]$lii)
|
||||
|
||||
$tickCount = [Environment]::TickCount
|
||||
$idleTicks = $tickCount - $lii.dwTime
|
||||
if ($idleTicks -lt 0) { $idleTicks += 0x100000000 }
|
||||
|
||||
$idleMinutes = [Math]::Floor($idleTicks / 1000 / 60)
|
||||
Write-Output $idleMinutes
|
||||
@@ -0,0 +1,22 @@
|
||||
' run_hidden.vbs
|
||||
' 用途:静默运行传入的命令行程序(无窗口、无闪烁)
|
||||
' 用法:wscript.exe //nologo "run_hidden.vbs" "C:\path\to\your.bat"
|
||||
|
||||
If WScript.Arguments.Count = 0 Then
|
||||
WScript.Quit 1
|
||||
End If
|
||||
|
||||
Dim strCommand
|
||||
strCommand = WScript.Arguments(0)
|
||||
|
||||
' 如果有多个参数(如带参数的命令),可以拼接(本例只传一个 .bat 路径)
|
||||
' 例如:WScript.Arguments(0) 是路径,后续可加 WScript.Arguments(1) 等
|
||||
|
||||
Dim objShell
|
||||
Set objShell = CreateObject("WScript.Shell")
|
||||
|
||||
' 第二个参数 0 表示隐藏窗口(SW_HIDE)
|
||||
' 第三个参数 False 表示不等待进程结束(异步执行)
|
||||
objShell.Run """" & strCommand & """", 0, False
|
||||
|
||||
Set objShell = Nothing
|
||||
Reference in New Issue
Block a user