Board logo

标题: 用Internet时间服务器来同步本机系统时间的批处理 [打印本页]

作者: Batcher    时间: 2009-2-23 20:10     标题: 用Internet时间服务器来同步本机系统时间的批处理

【方案一】 原文地址:http://www.cn-dos.net/forum/viewthread.php?tid=46143 wget.exe下载地址:http://bbs.bathome.net/thread-1114-1-1.html
  1. @echo off
  2. cls
  3. color 2f
  4. cd /d %~dp0
  5. Echo.&&Echo.正在与Internet时间服务器同步……&&Echo.===================================================
  6. wget -N http://weasel.jgxx.com/wsqbbs/time.php >nul 2>nul
  7. title 瓦斯曲-同步时间服务器工具
  8. for /f "tokens=1,2 " %%i in (time.php) do date %%i &&time %%j
  9. for /f "tokens=1,2 " %%i in (time.php) do echo 同步成功!!&& echo 服务器日期 %%i 系统日期 %date% &&echo 服务器时间 %%j 系统时间 %time%
  10. del /f /s /q time.php >nul 2>nul
  11. Echo.==================================================&&Echo.按任意键退出!!&&pause>nul 2>nul
复制代码
【方案二】 原文地址:http://www.cn-dos.net/forum/viewthread.php?tid=38908#pid268141 wget.exe下载地址:http://bbs.bathome.net/thread-1114-1-1.html
  1. @echo off
  2. wget -N http://www.appinn.com/servertime.php
  3. for /f "tokens=1,2 " %%i in (servertime.php) do date %%i &&time %%j
复制代码
【方案三】 原文地址:http://www.cn-dos.net/forum/viewthread.php?tid=38908#pid268223
  1. //这是一段在网上找到的系统时间自动更新JS脚本,任意Web服务器都可以用来协对时间而且也不用vb来改时间,保存为*.js点击运行即可
  2. //get HTTP Date: response from server, return approximate dateVal object
  3. function getServerDate(serverHttpAddress, httpProxyAddress)
  4. {
  5. var xmlHttp = new ActiveXObject("msxml2.xmlhttp");
  6. if(httpProxyAddress)
  7. {
  8. setProxy(2,proxyHttpAddress.replace("http://",""));
  9. }
  10. xmlHttp.open("GET", serverHttpAddress, 0);
  11. ts=(new Date()).getTime();
  12. WScript.Echo("Start time: " + ts);
  13. xmlHttp.send();
  14. tr=new Date();
  15. WScript.Echo("End time: " + tr.getTime());
  16. WScript.Echo("Server Time: " + Date.parse( xmlHttp.getResponseHeader('Date')));
  17. //Thu, 1 Jan 2009 09:47:01 GMT
  18. tr.setTime(Date.parse( xmlHttp.getResponseHeader('Date')) + ((new Date()).getTime() - ts)/2);
  19. //1230805540107
  20. WScript.Echo("debug time: " + tr)
  21. return tr;
  22. //}
  23. //catch(e)
  24. //{
  25. // return 0
  26. //}
  27. }
  28. //set system time to dateString
  29. //http://www.microsoft.com/technet/scriptcenter/topics/networking/08_atnc_advanced.mspx
  30. //http://www.microsoft.com/technet/scriptcenter/guide/sas_wmi_fvwp.mspx?mfr=true
  31. //20030327073509.519000+480
  32. function setSystemDate(dateString)
  33. {
  34. WScript.Echo("End time: " + dateString);
  35. var oSvc = GetObject("winmgmts:\\\\.\\root\\cimv2");
  36. oSvc.Security_.Privileges.AddAsString("SeSystemTimePrivilege", 1);
  37. var e = new Enumerator(oSvc.execQuery("select * from win32_OperatingSystem", "WQL", 32));
  38. //for (;!e.atEnd();e.moveNext())e.item().SetDateTime(dateString);
  39. }
  40. //generating the right WMI DATETIME fields
  41. with(getServerDate("http://www.google.com/")) //和哪一个HTTP服务器进行同步
  42. {
  43. setSystemDate("" +
  44. getUTCFullYear() +
  45. (getUTCMonth()<9?"0"+(getUTCMonth()+1):(getUTCMonth()+1)) +
  46. (getUTCDate()<9?"0"+getUTCDate():getUTCDate()) +
  47. (getUTCHours()<9?"0"+getUTCHours():getUTCHours()) +
  48. (getUTCMinutes()<9?"0"+getUTCMinutes():getUTCMinutes()) +
  49. (getUTCSeconds()<9?"0"+getUTCSeconds():getUTCSeconds()) +
  50. ".******+***");
  51. }
复制代码

作者: jellykid    时间: 2009-2-24 18:15

没成功
不知道怎么回师
作者: Batcher    时间: 2009-2-24 20:26     标题: 回复 2楼 的帖子

我不知道你用的哪个代码,所以帮不上你!!!!
作者: jellykid    时间: 2009-2-25 18:44

1 2段代码都是,
3段也错误,不用解决  ,解决1 2段代码就行了
作者: Batcher    时间: 2009-2-25 20:52     标题: 回复 4楼 的帖子

不同的系统,日期时间可能不同,你可以自己先看看获取的internet日期时间格式是否和本机的一致,如果不一致,自己改改格式。
作者: tireless    时间: 2009-2-25 21:06

也可以用 vbs 下载网页文字:

批处理实现网页下载 http://www.cn-dos.net/forum/viewthread.php?tid=24394
作者: jellykid    时间: 2009-2-26 15:56

呵呵!
好象是格式的问题!
小白就是没办法!55555555...
什么时候才能学好啊!
作者: wxcute    时间: 2009-2-26 19:03     标题: 早知道有这个帖子,前段时间就不写了。

CMOS 漏电,几乎天天校时
  1. ::从批处理之家论坛校时
  2. ::就是从我们论坛校时
  3. @echo off
  4. cd/d %~dp0
  5. echo 校时前:
  6. echo %date% %time%
  7. wget -O "%tmp%\tmp$d$t.txt" "http://bbs.bathome.net/logging.php?action=login" -q
  8. for /f "tokens=5,6 delims=< " %%d in ('"findstr /i "现在时间是" "%tmp%\tmp$d$t.txt""') do (
  9.  date %%d&time %%e
  10. )
  11. del "%tmp%\tmp$d$t.txt"
  12. echo+
  13. echo 校时后:
  14. echo %date% %time%
复制代码

作者: Batcher    时间: 2009-2-26 19:43     标题: 回复 7楼 的帖子

每个人都是从不会到会走过来的,多潜水多练习,不必妄自菲薄。
作者: fhplove    时间: 2009-9-30 19:37     标题: 回复 4楼 的帖子

显示系统无法接受输入的时间   

1,可能4楼你在输入日期时格式出现了错误(只是考虑这个问题)
2,检查你的"防火墙,杀毒软件,"是否进行了日期保护措施

    个人认为第2个可能性大点,因为我曾经做万佳网络文化园的代理时,盛天易游戏管理平台为了本地游戏与服务器游戏同步并且更新主机游戏列表都与要完全跟服务器时间一直,所以保护时间了,(请确保你没在网吧测试这段代码)
作者: Batcher    时间: 2010-2-27 20:32     标题: 回复 11楼 的帖子

把wget.exe和批处理放在同一个目录
作者: zhuzhen830201    时间: 2016-10-28 22:05

有两个问题
1运行【方案一】显示system can't find the file time.php这是什么原因?
2get -N http://weasel.jgxx.com/wsqbbs/time.php >nul 2>nul的意思是什么?
作者: Bella    时间: 2016-10-28 22:44

本帖最后由 Bella 于 2016-10-29 12:22 编辑

回复 12# zhuzhen830201


windows 用自带的时间同步就行了, 默认同步频率 7 天/次, 改注册表可以精确到秒
同步服务器(IP 池) 用 ntp 官方的 pool.ntp.org, 带智能解析, 跑哪个国家都行




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2