实现windows批处理下的计时功能
2015-10-20 17:42
274 查看
有时在执行完一段windows的批处理后,想知道这个过程花费了多少时间,如果是windows下的c代码可以在过程前后分别调用GetTickCount(),然后相减即可得到花费的时间。
但是如果在批处理中就没有这样现成的函数,并且在本人在网上找了好久都没找到。最后在搞定了批处理变量计算,从exe中取得返回值等技术点后,最终实现了这个功能。
注意,第一个set后面=前后一定不能加空格,第二个set后一定得有/a
随便用一个c的编译器,将上面的c源码编译成exe程序,取名为GetTickCount.exe,并将其放到某个系统路径下。
最后将打印出以毫秒为单位的时间花费。
GetTickCount的下载路径 http://files.cnblogs.com/files/xiangism/GetTickCount.rar
~~~~Eureka~~~~
但是如果在批处理中就没有这样现成的函数,并且在本人在网上找了好久都没找到。最后在搞定了批处理变量计算,从exe中取得返回值等技术点后,最终实现了这个功能。
在批处理中求值
下面的代码将打印出20@echo off set cho=23 set /a res=%cho% - 3 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~~~~
相关文章推荐
- 【转】mac上安装gradle
- [算法练习]最长公共子序列
- 使用Git的Push出现rejected - non-fast-forward错误
- iOS开发笔记--iOS应用架构谈 view层的组织和调用方案
- MySQL编码问题
- 关于bundle的创建方式
- Tomcat手动指定jdk路径
- ios archives 出现的是other items而不是iOS Apps的解决方案
- bzoj1211: prufer序列 | [HNOI2004]树的计数
- android显示证书sha1
- saiku - 连接 mondrain 数据源出错-空指针错误
- 本地搭建gitlab环境,配置邮件通知和基本操作
- Linux 内核空间与用户空间
- github上修改别人的代码并上传
- Android 退出应用程序
- ERROR actor.OneForOneStrategy: org.apache.spark.SparkContext
- 使用pdf.js显示pdf文件
- linux中crontab实现以秒执行任务
- Ansible 必须安装sshpass计划(you must install the sshpass program)
- 如何对自己的代码做成库文件,防止修改或者查看