各位好,最近編寫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程式計算出來的結果跟實際結果有很大的誤差,如下圖:
請各位幫忙我確認Batch程式那些需要改進的地方,謝謝。
P.S. PC1→NT系統,PC2→Win10系統,由於NT系統無法直接同步Win10系統,只能透過Batch程式去計算時間誤差。
回覆如下:
浩瀚星空:不好意思我描述不夠完整,我已重新補充說明,謝謝您的指教。
jasonlin268:謝謝您的指教,找到問題了。
其中的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
我不太懂你想問什麼說。
你想問的是程式問題??還是時間題呢??
時間問題跟你的機器時間有關。一般做機器自動校時就行了。
如果是程式讀取外部時間會有時間差的話。