- @echo off&setlocal enabledelayedexpansion&cls
- path=%path%;%~dp0.\command\第三方命令行程序
- ::==============================================================
- for /f "tokens=3 delims= " %%a in ('curl time.nist.gov:13') do (
- set "hh=1%%a"
- set /a "h=(!hh:~0,3!%%100+8)%%24"
- echo !h!!hh:~-6!|time
- )
- ::==============================================================
- :end
- echo 按任意键退出&pause>nul
- goto:eof
复制代码 说明:
1. 使用 CURL 工具访问 time.nist.gov:13 端口,获得GMT时间
未发现国内有提供DATATIME服务的,遗憾!
2. GMT+8小时=北京时间.
3. 设置计算机时间.
4. END
特点:
速度非常的快,没有延时!
方法二:- @echo off&setlocal enabledelayedexpansion&cls
- ::==============================================================
- for /f "skip=3 tokens=2*" %%i IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Cache') do set ieTmp=%%j
- call:extmpPath %ieTmp% ieTmp
- echo IE临时文件目录=%ieTmp%
- call start "IEXPLORE.EXE" "http://time.nist.gov:13"
- ping /n 10 127.1>nul
- for /f "tokens=* delims= " %%i in ('dir /s /b /o-d "%ieTmp%"\*time.nist*') do (
- for /f "tokens=3 delims= " %%a in ('type "%%i"') do (
- set hh=1%%a
- set /a "h=(!hh:~0,3!%%100+8)%%24"
- echo !h!!hh:~-6!|time
- )
- goto end
- )
- ::==============================================================
- :end
- echo 按任意键退出&pause>nul
- goto:eof
- :extmpPath
- set %2=%1
- goto :eof
复制代码 说明:
1. 使用默认浏览器访问 time.nist.gov:13 端口,获得GMT时间
然后在IE临时文件目录里搜索"*time.nist*" 名称的文件.
注意:不一定是 .htm后缀, 遨游的临时文件没有后缀,IE的有.
2. GMT+8小时=北京时间.
3. 设置计算机时间.
4. END
特点:
不需要第三方工具.
速度比第一种方法稍慢.
R: 如果加上校对日期,就会 涉及到1-12个月的大小, 闰年问题,2月份问题.
代码会比较长,.
time.nist.gov 这个网址位于美国,专门提供DataTime服务,使用格林尼治时间(GMT).
我国的 国家授时中心 并不提供DataTime服务不知道这个网址是不是属于国家机构.
该网的时间以flash文件显示. 其他校时网站都类似.
从网页内容来获得日期的思路是对的,但不可能使用简单方法获得,
最简单和迅速的方法就是访问DataTime服务器.
其他校时方法:
1. 对于使用Cookies的网站, 分析Cookies文件, 前提该网站自身的时间准确.
Cookies文件是.txt文本,其第5,6两行就是服务器时间,FILETIME格式.
2. 抓取HTTP头获得时间, 要使用网络抓包工具.
3. CMD命令telnet 的登陆成功后的退出信息,含有GMT.
比如 telnet w ww.time.ac.cn 80 的退出信息, 不过我试过无法把退出信息进行保存
谁有方法获得告诉我,先谢了.
::==============================================================
Re:
第3条已经解决了, 感谢 wxcute 提供的帮助!
::==============================================================
CURL下载: http://bbs.bathome.net/redirect.php?tid=1761&goto=lastpost
telnet.exe 上传
telnet 5.1.2600.3587.rar
MD5 b4792d7fb52ed4210a8bbc51d65957e0
telnet.exe Ver 5.1.2600.3587
MD5 5342c47cc020d32aa2ad145fc00010d1
http://www.rayfile.com/files/f7b1ee5c-a607-11de-8ca5-0014221f469f/
::==============================================================
综合3楼的服务器地址:
- @echo off&setlocal enabledelayedexpansion&cls
- path=%path%;G:\DOS\command\第三方命令行程序
- ::==============================================================
- reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "settime" /t REG_SZ /d """"%~f0"""" /f
- :loop
- sc QUERY RpcSs|find /i "RUNNING">nul&&echo 网络已连接||echo 网络未连接&&ping /n 2 127.1>nul&&goto loop
- ping /n 2 www.google.com|find /i "Reply from">nul&&echo 网络已连接||echo 网络未连接&&ping /n 2 127.1>nul&&goto loop
- pause
- set "jan=1"&set "feb=2"&set "mar=3"&set "apr=4"&set "may=5"&set "jun=6"&set "jul=7"&set "aug=8"&set "sept=9"&set "oct=10"&set "nov=11"&set "dec=12"
- for /f "tokens=1,2,3,4 delims= " %%a in ('curl -s stdtime.gov.hk:13') do (
- echo 网络时间: %%a-!%%b!-%%c %%d
- echo %%d|time
- echo %%c-!%%b!-%%a|date
- )
- ::==============================================================
- :end
- echo 按任意键退出&pause>nul
- goto:eof
复制代码
说明:
1.加入自运行注册表项
2.判断联网
3.更改日期与时间
[ 本帖最后由 hfg1977 于 2009-10-15 20:06 编辑 ] |