Board logo

标题: [问题求助] VBS如何自动校正时间? [打印本页]

作者: Heykuz    时间: 2013-7-17 16:32     标题: VBS如何自动校正时间?

看了这个贴子,也测试了,感觉很好。http://www.bathome.net/viewthrea ... hlight=%CA%B1%BC%E4

我现在的情况是,主板电子没电了,每次重起后都不正确。可不可以把上面那段代码改为,没有提示的,直接校正的。我想放去随机启动。

感谢了。
作者: ShadowFiend    时间: 2013-7-18 14:48

改成这样
  1. 'VBS校准系统时间 BY BatMan http://www.bathome.net
  2. Dim objXML, Url, Message
  3. Message = "恭喜你,本机时间非常准确无需校对!"
  4. Set objXML = CreateObject("MSXML2.XmlHttp")
  5. Url = "http://open.baidu.com/special/time/"
  6. objXML.open "GET", Url, False
  7. objXML.send()
  8. Do Until objXML.readyState = 4 : WScript.Sleep 200 : Loop
  9. Dim objStr, LocalDate
  10. objStr = objXML.responseText
  11. LocalDate = Now()
  12. Set objXML = Nothing
  13. Dim objREG, regNum
  14. Set objREG = New RegExp
  15. objREG.Global = True
  16. objREG.IgnoreCase = True
  17. objREG.Pattern = "window.baidu_time\((\d{13,})\)"
  18. regNum = Int(objREG.Execute(objStr)(0).Submatches(0)) /1000
  19. Dim OldDate, BJDate, Num, Num1
  20. OldDate = "1970-01-01 08:00:00"
  21. BJDate = DateAdd("s", regNum, OldDate)
  22. Num = DateDiff("s", LocalDate, BJDate)
  23. If Abs(Num) >=1 Then
  24.   Dim DM, DT, TM, objSHELL
  25.   DM = DateAdd("S", Num, Now())
  26.   DT = DateValue(DM)
  27.   TM = TimeValue(DM)
  28.   If InStr(Now, "午") Then
  29.     Dim Arr, Arr1, h24
  30.     Arr = Split(TM, " ")
  31.     Arr1 = Split(Arr(1), ":")
  32.     h24 = Arr1(0)
  33.     If Arr(0) = "下午" Then
  34.       h24 = h24 + 12
  35.       Else
  36.       If h24 = 12 Then h24 = 0
  37.     End If
  38.     TM = h24 & ":" & Arr1(1) & ":" & Arr1(2)
  39.   End If
  40.   Set objSHELL = CreateObject("Wscript.Shell")
  41.   objSHELL.Run "cmd /cdate " & DT, False, True
  42.   objSHELL.Run "cmd /ctime " & TM, False, True
  43.   Num1 = Abs(DateDiff("s", Now(), BJDate))
  44.   Message = "【校准前】" & vbCrLf _
  45.     & "标准北京时间为:" & vbTab & BJDate & vbCrLf _
  46.     & "本机系统时间为:" & vbTab & LocalDate & vbCrLf _
  47.     & "与标准时间相差:" & vbTab & Abs(Num) & "秒" & vbCrLf & vbCrLf _
  48.     & "【校准后】" & vbCrLf _
  49.     & "本机系统时间为:" & vbTab & Now() & vbCrLf _
  50.     & "与标准时间相差:" & vbTab & Num1 & "秒"
  51.   Set objSHELL = Nothing
  52. End If
  53. 'WScript.Echo Message
复制代码

作者: Heykuz    时间: 2013-7-19 10:18

楼上的耍我吧,有改过吗。
作者: ShadowFiend    时间: 2013-7-19 11:22

回复 3# Heykuz


    1.你确定没有改过?
    2.你没有试过代码吧?然后就知道不行?
作者: chok    时间: 2013-7-19 11:37

有没有办法批量检查多台机器本地时间后与北京时间对比???将不准的列出来
作者: 狱渊    时间: 2013-7-19 17:33

这个我我完全看不懂。。。  有谁能够解释一下吗。。  谢谢了
作者: Heykuz    时间: 2013-7-23 08:02

回复  Heykuz


    1.你确定没有改过?
    2.你没有试过代码吧?然后就知道不行?
ShadowFiend 发表于 2013-7-19 11:22



    感谢大侠,已经试用了,完全可以。再三感谢!很好用。
作者: vq86    时间: 2013-8-9 18:34

最后一行行头加了注释符'




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