標籤:
有時在執行完一段windows的批處理後,想知道這個過程花費了多少時間,如果是windows下的c代碼可以在過程前後分別調用GetTickCount(),然後相減即可得到花費的時間。
但是如果在批處理中就沒有這樣現成的函數,並且在本人在網上找了好久都沒找到。最後在搞定了批處理變數計算,從exe中取得傳回值等技術點後,最終實現了這個功能。
在批處理中求值
下面的代碼將列印出20
1 @echo off2 set cho=233 set /a res=%cho% - 34 echo %res%
注意,第一個set後面=前後一定不能加空格,第二個set後一定得有/a
取得exe的傳回值
用%errorlevel%可以取得執行一個exe之後其傳回值。
@echo offstart /wait Program.exeset r=%errorlevel%echo %r%
GetTickCount程式
寫一個簡單的c程式,調用GetTickCount()將其值返回
#include <windows.h>#include <stdio.h>int main(int argc, char** argv){ int t = GetTickCount(); printf("%d\n", t); return t;}
隨便用一個c的編譯器,將上面的c源碼編譯成exe程式,取名為GetTickCount.exe,並將其放到某個系統路徑下。
應用
@echo offstart /wait GetTickCount.exeset t1=%errorlevel%sleep 3
::TODO Something
start /wait GetTickCount.exeset t2=%errorlevel%set /a t=%t2%-%t1%echo %t%
最後將列印出以毫秒為單位的時間花費。
GetTickCount的下載路徑 http://files.cnblogs.com/files/xiangism/GetTickCount.rar
linux下的bash實現計時
順便貼出如何在linux下的shell中實現計時
#!/bin/bashstart=$(date "+%s")#do somethingsleep 2now=$(date "+%s")time=$((now-start))echo "time used:$time seconds"
~~~~Eureka~~~~
實現windows批處理下的計時功能