Xiangism

从一个无知角落里开始,蹒跚学步,一个未知到另一个未知,在跌跌撞撞中越走越快,越走越远,最后宇宙也为之开源。对于探索者来说,最后他们的思想总是变得和自己的足迹一样伟大。
随笔 - 62, 文章 - 1, 评论 - 220, 阅读 - 20万
  博客园  :: 首页  :: 联系 :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

实现windows批处理下的计时功能

Posted on   Xiangism  阅读(5741)  评论(3编辑  收藏  举报

有时在执行完一段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的下载路径 https://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~~~~

 

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示
目录导航