拯救烦人的 Windows 时间同步

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

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

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

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