2016-09-28 99 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%