663 Stimmen

Wie messe ich die Ausführungszeit eines Befehls auf der Windows-Befehlszeile?

Gibt es eine integrierte Möglichkeit, die Ausführungszeit eines Befehls in der Windows-Befehlszeile zu messen?

57voto

Nathan Herring Punkte 967

Der Einzeiler, den ich in Windows Server 2008 R2 verwende, lautet:

cmd /v:on /c "echo !TIME! & *mycommand* & echo !TIME!"

Solange mycommand keine Anführungszeichen erfordert (was die Anführungszeichenverarbeitung von cmd durcheinanderbringt). Das /v:on ermöglicht es, dass die beiden verschiedenen TIME-Werte unabhängig voneinander ausgewertet werden können, anstatt nur einmal bei der Ausführung des Befehls.

0 Stimmen

Dies funktioniert auch nicht für die "Spam"-Batches, die das Label beim ersten Mal überschreiben und implizieren, dass Sie den Computer, der die Berechnung durchführt, wie in stackoverflow.com/questions/673523/…ersetzen.

0 Stimmen

Normalerweise können Sie Anführungszeichen in cmd mit ^ umgehen (wie ^").

2 Stimmen

Wenn Sie den Befehl /v:on für das zweite Timing wiederholen, kann mein Befehl sogar Anführungszeichen enthalten. Beispiel: cmd /v:on /c echo !TIME! & echo "Angeführter Befehl" & cmd /v:on /c echo !TIME!.

56voto

Treb Punkte 19459

Wenn Sie ein Befehlsfenster geöffnet haben und die Befehle manuell aufrufen, können Sie z.B. einen Zeitstempel auf jeder Eingabeaufforderung anzeigen lassen.

prompt $d $t $_$P$G

Dies gibt Ihnen etwas Ähnliches wie:

23.03.2009 15:45:50,77

C:\>

Wenn Sie ein kleines Stapelskript haben, das Ihre Befehle ausführt, haben Sie vor jedem Befehl eine leere Zeile, z.B.

(leere Zeile)

myCommand.exe

(nächste leere Zeile)

myCommand2.exe

Sie können die Ausführungszeit für jeden Befehl anhand der Zeitinformation in der Eingabeaufforderung berechnen. Am besten wäre es vermutlich, die Ausgabe zur weiteren Analyse in eine Textdatei umzuleiten:

MyBatchFile.bat > output.txt

5 Stimmen

Ich dachte, ich würde mich ein paar Jahre nach der Diskussion einmischen, um mich für das Teilen des Befehls "prompt" zu bedanken. Ich habe viele CMD-Tricks gesehen (eher ein Bash-Typ), aber dieser ist mir entgangen.

2 Stimmen

Einfach, elegant, keine Installation und kein Schreiben von Batch-Dateien für einen Einzeleinsatzbefehl und kann jeden Schritt in einer Batch-Datei zeitlich festlegen.

29voto

Abe Voelker Punkte 27624

Da andere die Installation von Dingen wie Freeware und PowerShell empfehlen, könnten Sie auch Cygwin installieren, das Ihnen Zugriff auf viele grundlegende Unix-Befehle wie time geben würde:

abe@abe-PC:~$ time sleep 5

real    0m5.012s
user    0m0.000s
sys 0m0.000s

Nicht sicher, wie viel Overhead Cygwin hinzufügt.

43 Stimmen

Beim Beantworten von Windows-Fragen gilt Cygwin als Mogeln :-)

15 Stimmen

Er hat festgelegt, dass ResourceKit, TimeMem, ptime.exe, PowerShell und andere Dienstprogramme von Benutzern zuerst betrogen wurden. Daher hat der Autor Ihren Kommentar unangemessen gemacht, bevor Sie ihn geschrieben haben.

0 Stimmen

Ich habe das auch hochgewertet, weil ich es als die einfachste Lösung herausgefunden habe, da das kostenlose Programm Cmder bash enthält! cmder.net Denken Sie daran, dass Sie, wenn Sie Leerzeichen in bash maskieren müssen, einen Backslash \ direkt vor dem Leerzeichen verwenden müssen, anstatt "Anführungszeichen". z.B., cd /c/Program\ Files/

26voto

JohnW Punkte 2932

Nicht ganz so elegant wie einige der Funktionen auf Unix, aber erstellen Sie eine cmd-Datei, die wie folgt aussieht:

@echo off
time < nul
yourexecutable.exe > c:\temp\output.txt
time < nul
rem auf neueren Windows-Systemen können Sie versuchen time /T

Dadurch werden die Start- und Endzeiten wie folgt angezeigt:

Die aktuelle Zeit ist: 10:31:57.92
Geben Sie die neue Zeit ein:
Die aktuelle Zeit ist: 10:32:05.94
Geben Sie die neue Zeit ein:

2 Stimmen

Vorausgesetzt, Sie benötigen keine Portabilität zwischen verschiedenen Sprachen, können Sie auch ein Findstr "current" oder etwas ähnliches nach dem "time < nul" setzen (schöne Verwendung von nul übrigens; Ich habe immer echo.|time benutzt, aber das sieht nicht so elegant aus :)). Und verwenden Sie "for", um nur die Zeit und nicht den Text zu extrahieren.

2 Stimmen

Wenn Befehlserweiterungen aktiviert sind (das ist standardmäßig der Fall), hat die Win XP-Version von time eine /t -Option, die einfach die aktuelle Systemzeit anzeigt, ohne Sie zur Eingabe einer neuen Zeit aufzufordern. Wenn Sie dies jedoch tun, werden nur Stunden und Minuten angezeigt, was möglicherweise für einige Zwecke nicht ausreicht. (Siehe die Antwort von John Snow zu dieser Frage.)

3 Stimmen

time /T ist nur verwendbar, wenn der Prozess mehrere Minuten läuft! time < nul ist hässlicher, aber präziser.

21voto

pepoluan Punkte 5313

Ich benutze Freeware namens "GS Timer".

Erstellen Sie einfach eine Batch-Datei wie diese:

timer
ihreanwendung.exe
timer /s

Wenn Sie eine Reihe von Zeiten benötigen, leiten Sie einfach die Ausgabe von timer /s in eine .txt-Datei um.

Sie können es hier bekommen: Gammadyne's Free DOS Utilities


Die Auflösung beträgt 0,1 Sekunden.

4 Stimmen

Ich glaube nicht, dass die Verwendung einer Drittanbieteranwendung als "mit Standardmitteln" durchgeführt werden kann.

5 Stimmen

Der Fragesteller meinte "ohne zusätzliche Software installieren", aber dann erfordert die Spitzenantwort (akzeptiert) ebenfalls die Installation des gesamten Windows 2003 Resource Kits! Wie auch immer, timer.exe war genau das, wonach ich gerade gesucht habe, danke!

1 Stimmen

Dies ist ein gepflanzter Link. SoftPedia ist eine Klickfarm.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X