首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >执行一个批处理文件需要多长时间?

执行一个批处理文件需要多长时间?
EN

Stack Overflow用户
提问于 2009-04-11 06:09:06
回答 3查看 38.6K关注 0票数 20

如何编写脚本来计算完成脚本所需的时间?

我原以为会是这样的,但显然不是..

代码语言:javascript
复制
@echo off
set starttime=%time%
set endtime=%time%

REM do stuff here

set /a runtime=%endtime%-%starttime%
echo Script took %runtime% to complete
EN

回答 3

Stack Overflow用户

发布于 2009-04-11 06:28:41

这是一种切题,但它可能会对您有所帮助。

微软有一个timeit.exe程序,它的工作原理类似于unix 'time‘命令的增强版。它出现在Windows Server 2003 Resource Kit中,它几乎取代了我一直想要做的事情,就像你建议的那样。

这可能值得一看。

票数 4
EN

Stack Overflow用户

发布于 2012-10-31 21:37:48

很棒的小套路。但是,如果计算跨越两天,则计算是错误的。结果需要从24小时(8640000厘米秒)中减去。

同时删除相关行中的一个重复的'set‘命令。

请注意,区域设置会影响时间函数的格式,小数在UK中是句号,而不是逗号。

台词

rem我们可能已经测量了两天之间的时间

代码语言:javascript
复制
if %ENDTIME% LSS %STARTTIME% set set /A DURATION=%STARTTIME%-%ENDTIME%

需要更改为

rem我们可能已经测量了几天的时间

代码语言:javascript
复制
if %ENDTIME% LSS %STARTTIME% set /A DURATION=8640000 - (%STARTTIME% - %ENDTIME%)
票数 3
EN

Stack Overflow用户

发布于 2011-03-12 01:31:04

查看此脚本,它将通过WMI检索时间,因此它是独立于区域设置的。

代码语言:javascript
复制
@echo off
::::::::::::::::::::::::::::::::::::::::::
::  TimeDiff v1.00 by LEVENTE ROG       ::
::       www.thesysadminhimself.com     ::
::::::::::::::::::::::::::::::::::::::::::
 
::[ EULA ]:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::  Feel free to use this script. The code can be redistributed  ::
::  and edited, but please keep the credits.                     ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 
::[ CHANGELOG ]::::::::::::::
::  v1.00 - First Version  ::
:::::::::::::::::::::::::::::
 
 
FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Second /Format:table ^| findstr /r "."') DO (
 set Milisecond=%time:~9,2% 
 set Day=%%A
 set Hour=%%B
 set Minute=%%C
 set Second=%%D
)
set /a Start=%Day%*8640000+%Hour%*360000+%Minute%*6000+%Second%*100+%Milisecond%
 
::
::
:: PUT COMMANDS HERE
ping www.thesysadminhimself.com
::
::
 
FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Second /Format:table ^| findstr /r "."') DO (
 set Day=%%A
 set Hour=%%B
 set Minute=%%C
 set Second=%%D
)
set Milisecond=%time:~9,2% 
set /a End=%Day%*8640000+%Hour%*360000+%Minute%*6000+%Second%*100+%Milisecond%
set /a Diff=%End%-%Start%
set /a DiffMS=%Diff%%%100
set /a Diff=(%Diff%-%DiffMS%)/100
set /a DiffSec=%Diff%%%60
set /a Diff=(%Diff%-%Diff%%%60)/60
set /a DiffMin=%Diff%%%60
set /a Diff=(%Diff%-%Diff%%%60)/60
set /a DiffHrs=%Diff%
 
:: format with leading zeroes
if %DiffMS% LSS 10 set DiffMS=0%DiffMS!%
if %DiffSec% LSS 10 set DiffMS=0%DiffSec%
if %DiffMin% LSS 10 set DiffMS=0%DiffMin%
if %DiffHrs% LSS 10 set DiffMS=0%DiffHrs%
 
echo %DiffHrs%:%DiffMin%:%DiffSec%.%DiffMS%
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/739606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档