2016-09-28 95 views
-1

我想知道我的腳本如何計算當前時間和午夜時間之間的秒數。批處理腳本在幾秒鐘內計算時間差異

進出口運行W10和我的腳本需要超時-t X

其中,X(S)=午夜currentTime的

有反正我能做到這一點?

預先感謝您!

+2

你已經提到'你的腳本'所以發佈它,並給我們一個戰鬥通道根據現場程序進行回答。此外,由於時間等本地變化,您將不得不向我們提供您的特定日期和時間變量輸出。 'ECHO = [%DATE%] [%TIME%]'。我們還需要確定您是否想知道午夜多久或午夜多長時間。 – Compo

+1

dbenham寫了一個不錯的混合批處理文件,與日期和時間計算很好。 ('powershell「[int](new-timespan -end(get-time))中的/ f %%我可以在http://dostips.com/forum/viewtopic.php?f=3&t=4847&start=9999#p47680 – Squashman

+1

date).addDays(1).date).totalseconds「')do set」secondsToMidnight = %% I「' – rojo

回答

0

爲了利用PowerShell的批處理文件,我建議:

For /F %%I In ('Powershell^
    "[int](New-TimeSpan -End (Get-Date).AddDays(1).Date).TotalSeconds"' 
) Do Timeout /T %%I 

這不會是準確的。然而,由於越來越PowerShell的輸出,執行超時命令之間的跨度。

0

%TIME%將展開爲HH:MM:SS.DD或HH:MM:SS,DD,其中HH =小時,MM =分鐘,SS =秒,DD =小數秒。

我假設我們可以忽略小數秒DD。

的HH將24小時格式,並且可以具有一個前導空格或領先0

的MM和SS可以有一個前導0

SET/A治療數字與主導0爲八進制,這不是我們想要的。所以我們只需要任何空間轉換成0,和前綴用1

每個值那麼for /f "tokens=1-3 delims=:.," %%a in ("%time: =0%") do ...將產生以下值:

1%%a = hours + 100 
1%%b = minutes + 100 
1%%c = seconds + 100 

剩下的就是簡單的數學

(24*60*60)-((((1%%a*60)+1%%b)*60)+1%%c)-((((100*60)+100)*60)+100) 
simplifies to 
86400 - (((1%%a*60+1%%b)*60+1%%c) - 366100) 
simplifies to 
452500-(1%%a*60+1%%b)*60-1%%c 

所以完整的代碼變成

for /f "tokens=1-3 delims=:.," %%a in (
    "%time: =0%" 
) do set /a "SecondsUntilMidnight=452500-(1%%a*60+1%%b)*60-1%%c" 
timeout /t %SecondsUntilMidnight%