實現windows批處理下的計時功能


有時在執行完一段windows的批處理后,想知道這個過程花費了多少時間,如果是windows下的c代碼可以在過程前后分別調用GetTickCount(),然后相減即可得到花費的時間。

但是如果在批處理中就沒有這樣現成的函數,並且在本人在網上找了好久都沒找到。最后在搞定了批處理變量計算,從exe中取得返回值等技術點后,最終實現了這個功能。

在批處理中求值

下面的代碼將打印出20

1 @echo off
2 set cho=23
3 set /a res=%cho% - 3
4 echo %res%

注意,第一個set后面=前后一定不能加空格,第二個set后一定得有/a

取得exe的返回值

用%errorlevel%可以取得執行一個exe之后其返回值。

@echo off
start /wait Program.exe
set 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 off
start /wait GetTickCount.exe
set t1=%errorlevel%

sleep 3
::TODO Something
start /wait GetTickCount.exe set t2=%errorlevel% set /a t=%t2%-%t1% echo %t%

最后將打印出以毫秒為單位的時間花費。

GetTickCount的下載路徑 http://files.cnblogs.com/files/xiangism/GetTickCount.rar

linux下的bash實現計時

順便貼出如何在linux下的shell中實現計時

#!/bin/bash
start=$(date "+%s")

#do something
sleep 2

now=$(date "+%s")
time=$((now-start))
echo "time used:$time seconds"

 

~~~~Eureka~~~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM