拯救烦人的 Windows 时间同步

122 天前
 Censhuang

非技术贴,小白用 GPT 解决的,GPT 代码警告
用途:懒人,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
2954 次点击
所在节点    分享创造
26 条回复
NoOneNoBody
122 天前
为什么要手动呢?机器有什么问题不能自动同步么?
sunshower
122 天前
clash 不会自动关闭系统代理,这个就已经怪了,用了这么多种 gui ,没有遇到不会自己关的。
核心异常不能上网也是怪,一般你不设置 tun 模式 很少会遇到 dns 解析异常。
然后你这个同步时间的操作,在这两个问题里起什么作用,我没看出来。
zheny2002
122 天前
@sunshower 同疑惑,第二个同步时间应该是 vmess 协议需要,因为有校验数据包超时
cheng6563
122 天前
时间同步是系统内置计划任务就有的,自己去改下触发条件就行了。
youtiao
122 天前
感觉你路子走歪了
HomeZane
122 天前
Windows 时间同步啥时候烦人了?
Censhuang
122 天前
@NoOneNoBody window 的锅,开机的时候网络异常时间就不能同步了
Censhuang
122 天前
@sunshower 不太喜欢用 TUN 模式,之前用 TUN 模式,打开一些软件就直接未响应了,问开发者也没啥头绪。
Censhuang
122 天前
@sunshower clash for window ,clash.net ,clash verge ,Nyanpasu (在用),这些面板里貌似均未提供自动关闭系统代理的
my101du
122 天前
虽然楼上有不少人质疑“这不是没事找事吗? windows 自带就有时间同步”

但是,最近 1 个月,我司 3 台 Windows 11 电脑,出现慢 4 分钟的问题了(正常开启网络时间同步)
Censhuang
122 天前
@cheng6563 #4 没有往这方面想,想的是一个脚本自动同步时间,计划任务这边没想到
Greendays
122 天前
我装的 windows 和 Linux 双系统,如果之前用 Linux 关机,那么下次启动如果切换到 Windows ,那么时间同步大概率是失效的,需要手动同步。
Greatshu
122 天前
XY 问题,小题大做
sunshower
122 天前
@Censhuang #8 clash.net 没用过,另外三个都用过,确实没有这个设置项,因为开发者基本都是默认做好了这个功能,关闭软件时候会自动恢复系统代理设置,免得 uwp app 连不了网 ,关机或重启都是正常的。
以前见过某个 gui 把这个功能做成设置项了,但好像在去年底删库潮中,那个 gui 也停止维护了。没记下名字

你试试先把软件的系统代理关闭了,退出软件,把“设置”的“代理”的设置里全清空+全关闭,再开软件,再开软件的系统代理。然后退出软件,刷新“设置”观察一下。我还是没觉得是软件问题导致的。
win 的“设置”,如果你依靠软件做了某些修改,它这个 uwp 是不会实时刷新的,必须返回上一层选项,或者先点击其它选项,再进“代理”这个设置,才能看到变化

@zheny2002 #3 vmess 协议没怎么接触,还真不太了解
superrichman
122 天前
有没有可能是 clash 反人类
Censhuang
122 天前
@sunshower #14 关闭系统代理确实会正常,退出 clash 的时候也会关闭系统代理,但是 clash 在线直接关机还是不行。我的需求其实是开机的时候系统代理是正常的。这个关机 clash 不会关闭系统代理的问题同样反馈在 mac 系统上,clashX 也是这样子,开机没 clash 就不能联网(朋友的 MacBook )
Censhuang
122 天前
@sunshower #14 不过 clash 自启动会让核心完全不能工作你有头绪吗
Censhuang
122 天前
@Greatshu #13 还是网友脑子灵活,至少这个帖子有 4 个人收藏,是认为这是有用的。可能有些人会像我去想到用命令的方式去解决时间问题。任务计划属实很少用。
sunshower
122 天前
@Censhuang #17 没头绪,没遇到过。核心完全不能工作是什么表现
Censhuang
122 天前
@sunshower #19 clash 启动后,没有任何连接域名,国内访问均不正常,chrome 的提示忘了。重启 clash 核心没有效果,重启电脑才行。核心是 mihomo

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1059685

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX