2016-09-28 9 views
-1

スクリプトの現在の時刻と真夜中の時刻との間の秒数はどのように計算できますか?バッチスクリプトは時間差を秒単位で計算します

W10ランニングイムと私のスクリプトは、X(S)=深夜-CURRENTTIME

は私がこれを行うことができますとにかくありますか?X

-tタイムアウトを必要としますか

ありがとうございます!それが原因PowerShellの出力を取得し、timeoutコマンドを実行する間のスパンにしかし正確ではありません

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

:私はお勧めしたいバッチファイルでPowerShellを利用する

+2

なりサイトの手順に基づいて回答してください。さらに、時刻などはローカルで変更できるため、特定の日付と時刻の変数出力を提供する必要があります。 'ECHO = [%DATE%] [%TIME%]'。真夜中までにどのくらいの時間を知りたいのか、深夜からどれくらいの時間を知りたいのかを確かめる必要があります。 – Compo

+1

dbenhamは日付と時刻の計算に優れた素晴らしいハイブリッドバッチファイルを作成しました。/f %% I for( 'powershell' [int](new-timespan -end(get-timepan-end))のためのhttp://www.dostips.com/forum/viewtopic.php?f=3&t=4847&start=9999#p47680 – Squashman

+1

'日付).addDays(1).date).totalseconds "')を設定する" secondsToMidnight = %% I " – rojo

答えて

0

%TIME%は、HH:MM:SS.DDまたはHH:MM:SS、DD(HH =時間、MM =分、SS =秒、DD =分数秒)に展開されます。

私は分数秒DDを無視できると仮定しています。

HHは24時間形式になり、先頭のスペースを有していてもよく、又は主要0

MMとSSが先頭とリーディング0

SET/A扱う番号を有していてもよいです0を8進数として返します。これは私たちが望むものではありません。

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 ...には、次の値が得られます0に任意のスペースを変換し、1

でそれぞれの値の前に付ける必要がありますだから、完全なコードは、それを投稿し、私達に戦いちゃんを与えるあなたが「スクリプト」を言及した

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% 
関連する問題