Windows 系统日期时间快速同步脚本

笔者的 PC 上同时安装了 Win10 和 Ubuntu 双系统。在使用 Ubuntu 后,切换回 Win10 时,经常会发现时间落后了几个小时。

这里分享一个脚本,能方便地用于将时间与 NTP 服务器同步,此外,为了加快同步速度,脚本加入了国内常用的 NTP 服务器地址。

代码如下:

1
2
3
4
5
6
7
@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
net start w32time
w32tm /config /manualpeerlist:"ntp.ntsc.ac.cn,0x1 cn.ntp.org.cn,0x2 time.pool.aliyun.com,0x3 cn.pool.ntp.org,0x4 time.windows.com,0x5" /syncfromflags:manual /update
w32tm /resync /rediscover
net stop w32time
pause

将上述保存为批处理文件,需要同步时间时双击即可。

对代码的一些说明(Generate by ChatGTP):

这个BAT脚本的作用是以管理员权限运行,并配置Windows系统的时间同步服务 w32time,将本地计算机与指定的网络时间协议(NTP)服务器同步。以下是具体解释:

  1. 第02行代码:用于确保该脚本以管理员权限运行。如果没有管理员权限,它会使用mshtaShellExecute来启动一个新的CMD窗口,并以管理员权限重新运行当前脚本。

  2. net start w32time: 启动Windows时间服务 w32time,该服务负责系统时间的同步。

  3. 第04行的代码:配置Windows时间服务,使其与指定的NTP服务器列表同步,/manualpeerlist 参数指定了多个NTP服务器,/syncfromflags:manual 指示手动同步,/update 应用这些设置。

    • ntp.ntsc.ac.cn,0x1: 中国国家授时中心NTP服务器
    • cn.ntp.org.cn,0x2: 中国公共NTP服务器
    • time.pool.aliyun.com,0x3: 阿里云时间服务器
    • cn.pool.ntp.org,0x4: 中国NTP池服务器
    • time.windows.com,0x5: Windows的默认时间服务器

    每个服务器后面的 0xN 是特殊标志,用来指定优先级和不同的时间源标识。

  4. w32tm /resync /rediscover: 重新同步时间,并重新发现可用的NTP服务器。

  5. net stop w32time: 停止Windows时间服务。

注:6~7 行可酌情删改。