iT邦幫忙

0

兩台電腦(不同系統)計算時間誤差秒數Batch

  • 分享至 

  • xImage

各位好,最近編寫Batch遇到問題,程式碼如下:

@echo off
echo ******************************
FOR /F "tokens=4" %%k IN ('net time \\192.168.1.1') do set PC1Time=%%k
set PC1H=%PC1Time:~0,2%
set PC1M=%PC1Time:~3,2%
set PC1S=%PC1Time:~6,2%
echo PC1 Now Time %PC1H%:%PC1M%:%PC1S%
set PC2H=%time:~0,2%
set PC2M=%time:~3,2%
set PC2S=%time:~6,2%
echo PC2 Now TIme %PC2H%:%PC2M%:%PC2S%
if %PC1H% geq 10 (set PC1H=%PC1H%) else (set PC1H=%PC1H:~1:1%)
if %PC1M% geq 10 (set PC1M=%PC1M%) else (set PC1M=%PC1M:~4:1%)
if %PC1S% geq 10 (set PC1S=%PC1S%) else (set PC1S=%PC1S:~7:1%)
if %PC2H% geq 10 (set PC2H=%PC2H%) else (set PC2H=%PC2H:~1:1%)
if %PC2M% geq 10 (set PC2M=%PC2M%) else (set PC2M=%PC2M:~4:1%)
if %PC2S% geq 10 (set PC2S=%PC2S%) else (set PC2S=%PC2S:~7:1%)
set /a NumPC2=PC2H*60
set /a NumPC2=(NumPC2+PC2M)*60
set /a NumPC2=NumPC2+PC2S
set /a NumPC1=PC1H*60
set /a NumPC1=(NumPC1+PC1M)*60
set /a NumPC1=NumPC1+PC1S
if %NumPC1% gtr %NumPC2% (set /a Num=NumPC1-NumPC2) else (set /a Num=NumPC2-NumPC1)
echo PC1 Jet lag %Num% Sec
echo *****************************
pause

Batch程式計算出來的結果跟實際結果有很大的誤差,如下圖:
https://ithelp.ithome.com.tw/upload/images/20190731/201184807Wyuahjkd3.jpg
請各位幫忙我確認Batch程式那些需要改進的地方,謝謝。

P.S. PC1→NT系統,PC2→Win10系統,由於NT系統無法直接同步Win10系統,只能透過Batch程式去計算時間誤差。

回覆如下:
浩瀚星空:不好意思我描述不夠完整,我已重新補充說明,謝謝您的指教。
jasonlin268:謝謝您的指教,找到問題了。

ccutmis iT邦高手 2 級 ‧ 2019-07-31 14:21:19 檢舉
if( 兩台電腦都能上網的話 ) 兩台都裝 NTPClock; /* 就能同步到接近零秒了!*/
蟹老闆 iT邦大師 1 級 ‧ 2019-07-31 18:34:43 檢舉
應該可以直接同步忽略時間差
Riverwind iT邦新手 5 級 ‧ 2019-08-01 18:03:31 檢舉
試一試以NT 訂立NTP server, 再以win10 去同步
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
jasonlin268
iT邦研究生 3 級 ‧ 2019-07-31 15:52:03
最佳解答

其中的if改一下看看:

if %PC1H% geq 10 (set PC1H=%PC1H%) else (set PC1H=%PC1H:~1,1%)
if %PC1M% geq 10 (set PC1M=%PC1M%) else (set PC1M=%PC1M:~4,1%)
if %PC1S% geq 10 (set PC1S=%PC1S%) else (set PC1S=%PC1S:~7,1%)
if %PC2H% geq 10 (set PC2H=%PC2H%) else (set PC2H=%PC2H:~1,1%)
if %PC2M% geq 10 (set PC2M=%PC2M%) else (set PC2M=%PC2M:~4,1%)
if %PC2S% geq 10 (set PC2S=%PC2S%) else (set PC2S=%PC2S:~7,1%)

另外也可以參考資料:
使用net time指令,設定自動與內部主機時間同步
https://ithelp.ithome.com.tw/articles/10174201

1

我不太懂你想問什麼說。
你想問的是程式問題??還是時間題呢??

時間問題跟你的機器時間有關。一般做機器自動校時就行了。
如果是程式讀取外部時間會有時間差的話。

我要發表回答

立即登入回答