用途:懒人,clash 设置了系统代理,电脑关机的时候不会自动关闭系统代理,导致开机的时候系统时间经常同步失败
而 Windows 设置也是反人类,控制面板同步时间需要点两遍,第一遍报错第二遍才能同步时间
clash 的自启动会让核心异常,出现异常时候设置为系统代理会都不能上网,只能重启/关闭自启动解决,我选择了后者。
不会代码,也没有什么人去解决这个问题
使用的 NTP 服务器:ntp6.aliyun.com
参考文档: https://learn.microsoft.com/zh-cn/windows-server/networking/windows-time-service/windows-time-service-tools-and-settings?tabs=config
时间同步命令由文心一言工具箱读上述文档后编写,直接编写的 bat 不能同步时间,openai 写的代码也是这样子的。
记得使用 ANSI 编码保存文件
@echo off
SETLOCAL EnableDelayedExpansion
:: 尝试提升权限
net session >nul 2>&1
if %errorLevel% neq 0 (
echo 请求管理员权限...
powershell -Command "Start-Process -FilePath '%0' -Verb RunAs"
exit /b
)
echo 正在配置并同步时间...
:: 停止 Windows Time 服务
net stop w32time
:: 配置 NTP 服务器为 ntp6.aliyun.com
w32tm /config /syncfromflags:manual /manualpeerlist:"ntp6.aliyun.com"
:: 启动 Windows Time 服务
net start w32time
:: 立即触发时间同步
w32tm /resync
:: 等待同步完成并检查结果
timeout /t 3
w32tm /query /status
:: 输出同步后的时间
echo 同步后的时间为:%date% %time%
:: 等待 2 秒后关闭命令提示符窗口
timeout /t 2 /nobreak >nul
exit
ENDLOCAL
如果跟我一样还是懒人,可以再写个同时启动 clash 和同步时间的命令。
这个命令由 gpt4turbo 所写,文心一言工具箱所写的代码不能正常请求管理员,需要右键管理员运行才能正常使用
这个代码检测是否为管理员,若不是管理员再请求权限
同样记得使用 ANSI 编码保存。
@echo off
:: 检测管理员权限
net session >nul 2>&1
if %errorlevel% == 0 (
echo 运行中...
) else (
echo 请求管理员权限...
:: 创建 VBS 脚本以提升权限
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
:: 删除临时 VBS 脚本
del "%temp%\getadmin.vbs"
exit
)
:: 以管理员权限启动程序
start "" "这里写 clash 路径"
start "" "这里写同步时间的命令"
:: 执行完后关闭命令窗口
exit