2014-03-27 69 views
0

我有一個執行Qlikview文件的批處理文件,我需要記錄文本文件中的重新載入時間,爲此我需要將時間存儲在腳本在變量中啓動,另一個變量存儲結束時間,最後在文本文件中轉儲時間之間的差異。請建議如何做到這一點。要記錄在文本文件中執行文件的時間

+0

參考此:http://stackoverflow.com/questions/739606/how-long-a-batch-file-takes-to-execute – r3ap3r

+0

看看ptime:http://stackoverflow.com/a/9578588/1037208。它非常易於使用。 – OSH

回答

0

elapsed.bat

@echo off 
:: calculate elapsed time 
:: if a supplied parameter starts '/' then put elapsed in /name 
:: if any other parameter, re-start 
set y$1=%1 
if DEFINED y$1 IF "%y$1:~0,1%"=="/" (SET "y$3=%y$1:~1%") else (for %%i in (y$3 yeh yem yes yec) do set %%i=) 
call :proc 
if not defined yeh echo -- start elapsed -- 
if not defined yeh goto nocalc 
set /a y$2=((((%yeh% * 60) + %yem%) * 60) + %yes%) * 100 + %yec% 
set /a y$1=((((%y$h% * 60) + %y$m%) * 60) + %y$s%) * 100 + %y$c% 
if %y$2% GTR %y$1% set /a y$1=%y$1% + 8640000 
set /a y$2=%y$1% - %y$2% 
SET /a y$1=y$2/100 
SET /a y$2=y$2 %% 100 
SET y$2=00%y$2% 
SET y$2=%y$1%.%y$2:~-2% sec elapsed 
IF DEFINED y$3 (SET %y$3%=%y$2%) ELSE (echo %y$2%) 
:nocalc 
set yeh=%y$h% 
set yem=%y$m% 
set yes=%y$s% 
set yec=%y$c% 
for %%i in (y$1 y$2 y$c y$m y$s y$h y$3) do set %%i= 
goto :eof 

:proc 
set y$1=%time% 
call :putdec y$c %y$1:~-2% 
call :putdec y$s %y$1:~-5,2% 
call :putdec y$m %y$1:~-8,2% 
call :putdec y$h %y$1:~0,2% 

goto :eof 

:putdec 
set y$2=%2 
if %y$2:~-1%==: set y$2=0%y$2:~0,1% 
set /a %1=1%y$2% - 100 
goto :eof 

我很久以前寫的這一點 - 毫無疑問,這還有待改進。

call elapsed 

將啓動一個定時器(存儲在yeh的時間)

call elapsed 

在第二時間將報告經過時間。

call elapsed /var 

將所經過的時間分配給var

call elapsed anythingelse 

將重新開始計時。

相關問題