定时进程Windows 7 DOS提示符

问题描述

| 我正在运行C ++程序,想知道需要多少时间。我可以使用头文件time.h和Windows.h中的内置函数来完成此操作,但我想在UNIX中使用\“ time \”命令。原因是因为我的程序将输出重定向一个750 MB的文本文件,并且我没有心情尝试打开它。如何在Windows 7(DOS提示符)下完成。 谢谢 瓦伦     

解决方法

        您可以使用
echo %TIME%
捕获前后的时间,或者有一些免费的实用程序用于此目的。例如,从此链接签出秒表程序。不幸的是,它的精度只有秒级 http://www.jfitz.com/dos/index.html 另请参阅此类似问题。这里有一些不错的解决方案,包括使用
set /A
解析
echo %TIME%
的批处理文件, 批处理文件中的打印时间(毫秒)     ,        我已经使用了很长一段时间(足够长的时间,它最初是为MS-DOS编写的)。它总是将计时输出写入stderr,因此即使/如果标准输出定向到文件,它也会进入控制台。从理论上讲,您可以将它直接写到与标准错误分开的控制台中,但是我从来不需要它,所以我从来没有做过。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <process.h>
#include <malloc.h>
#include <string.h>
#if defined(WIN32) || defined(_WIN32)
#include <windows.h>
#else
#include <dos.h>
#endif

int main(void) {

    clock_t start,end;
    char *cmd;
#ifdef WIN32
    char *cmd_line = strdup(GetCommandLine());
#else
    char *cmd_line = 0x80;
#endif
    int seconds,tenths;
    char seps[] = \" \\r\\n\\t/\";

    _heapmin();

    strtok(cmd_line,seps);

    cmd_line = strtok(NULL,\"\");

    start = clock();
    system(cmd_line);
    end = clock();

    cmd = strtok(cmd_line,seps );

    seconds = (end-start) / CLOCKS_PER_SEC;
    tenths = (end-start) / ( CLOCKS_PER_SEC / 10 );
    tenths -= seconds * 10;

    fprintf(stderr,\"\\n`%s\' took %d.%d seconds.\\n\",cmd,seconds,tenths);
    return 0;
}
请注意,将结果命名为
time.exe
不会产生正确的结果(
time
是外壳程序中内置的命令,因此它将永远不会运行)。我通常将其命名为\“ timer \”。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...