V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Censhuang
V2EX  ›  分享创造

拯救烦人的 Windows 时间同步

  •  
  •   Censhuang · 151 天前 · 3033 次点击
    这是一个创建于 151 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    @zheny2002 #3 vmess 协议没怎么接触,还真不太了解
    superrichman
        15
    superrichman  
       150 天前
    有没有可能是 clash 反人类
    Censhuang
        16
    Censhuang  
    OP
       150 天前
    @sunshower #14 关闭系统代理确实会正常,退出 clash 的时候也会关闭系统代理,但是 clash 在线直接关机还是不行。我的需求其实是开机的时候系统代理是正常的。这个关机 clash 不会关闭系统代理的问题同样反馈在 mac 系统上,clashX 也是这样子,开机没 clash 就不能联网(朋友的 MacBook )
    Censhuang
        17
    Censhuang  
    OP
       150 天前
    @sunshower #14 不过 clash 自启动会让核心完全不能工作你有头绪吗
    Censhuang
        18
    Censhuang  
    OP
       150 天前
    @Greatshu #13 还是网友脑子灵活,至少这个帖子有 4 个人收藏,是认为这是有用的。可能有些人会像我去想到用命令的方式去解决时间问题。任务计划属实很少用。
    sunshower
        19
    sunshower  
       150 天前
    @Censhuang #17 没头绪,没遇到过。核心完全不能工作是什么表现
    Censhuang
        20
    Censhuang  
    OP
       150 天前
    @sunshower #19 clash 启动后,没有任何连接域名,国内访问均不正常,chrome 的提示忘了。重启 clash 核心没有效果,重启电脑才行。核心是 mihomo
    sunshower
        21
    sunshower  
       150 天前
    @Censhuang #20 如果你是国内无法访问,国外正常,然后如果用 Proxy Switchy 设置浏览器全局代理,国内又能访问了,那就是 dns 解析问题
    COOOOOOde
        22
    COOOOOOde  
       150 天前
    windows 的话,我选择不开系统代理. 很多软件都有代理设置项, 需要走代理的软件设置一下就好了 比如 telegram 这样的. 浏览器用 SwitchyOmega 插件
    PrinceofInj
        23
    PrinceofInj  
       150 天前
    如果仅仅开机那一小段时间的同步无法进行都会导致时间异常,你更应该考虑一下是不是计算机除了啥问题,虽然主板上的时间不是非常准,但是在一周内应该不会有超过一分钟偏差吧。
    VwEI
        24
    VwEI  
       150 天前
    一直用的自动时间校准的小软件,设置每隔多久校准就行了
    Censhuang
        25
    Censhuang  
    OP
       150 天前
    @sunshower #21 是国内国外都不能访问,clash 的连接里没有任何域名
    ymz
        26
    ymz  
       148 天前
    最近确实遇见了 windows 系统时钟不同步的情况
    bareen
        27
    bareen  
       25 天前
    @Censhuang #9 我都是设置 clash 手动开启,然后写个 bat 开机自动清空代理设置,我是靠这个方法解决的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2606 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 05:55 · PVG 13:55 · LAX 21:55 · JFK 00:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.