noodles101
Goto Top

Reine Zeitmessung unter Windows XP

Ich möchte in einer Batchdatei die Zeitmessen, die ein Befehl oder Aufruf kostet.

Ich möchte in einer Batchdatei die Zeitmessen, die ein Befehl oder Aufruf kostet. Wollte dazu %TIME% nutzen. Aber so einfach scheint es nicht zu sein. Könnt Ihr mir diesbezüglich helfen? Meine Batch sieht so aus:

@set stime = %TIME%
@dir
@set etime = %TIME%

@set ergebnis = %etime% - %stime%

@echo %ergebnis%
@pause

Besten Dank im Voraus.
Enrico

Content-Key: 40173

Url: https://administrator.de/contentid/40173

Ausgedruckt am: 29.03.2024 um 06:03 Uhr

Mitglied: Garfieldt
Garfieldt 15.09.2006 um 10:14:29 Uhr
Goto Top
Ich glaube, dein Problem hier ist, das du nicht so einfach zwei Zeiten voneinander subtrahieren kannst. Meiner Meinung nach ist das mit reinen Konsolenbefehlen unter Dos oder Windows nicht moeglich.
Alles was dir da bleibt, ist die Start und die Endzeiten in eine Textdatei zu schreiben und dann mit einem 2. Programm auszuwerten.
Mitglied: Metzger-MCP
Metzger-MCP 15.09.2006 um 10:56:36 Uhr
Goto Top
Stimmt nicht ganz ! das geht @Garfieldt

MFG Metzger


kurze Version Milisekunden

@echo off

echo %time% >z.txt
for /F "eol=; tokens=1,2,3,4,5* delims=: " %%i in (z.txt) do echo %%i%%j%%k%%l >z.txt
for /F "eol=; tokens=1,2* delims=, " %%i in (z.txt) do set st= %%i%%j

rem hier kommen deine Befehle rein zum testen kannst du ja pause einfügen ...

echo %time% >z.txt
for /F "eol=; tokens=1,2,3,4,5* delims=: " %%i in (z.txt) do echo %%i%%j%%k%%l >z.txt
for /F "eol=; tokens=1,2* delims=, " %%i in (z.txt) do set et= %%i%%j

del z.txt

set /a dif= (%et% - %st% ) / 100
set /a std= %dif% / 3600
set /a min= (%dif% - ( 3600 * %std% )) / 60
set /a sek= %dif% - (( %dif% / 60 ) * 60 )
set /a msek= (%et% - %st% ) - (((%et% - %st% ) / 100) * 100 )

echo Die Laufzeit betrug %std% Stunden %min% Minuten %sek% Sekunden %msek% Milisekunden


kurze Version Sekunden

@echo off

echo %time% >z.txt
for /F "eol=; tokens=1,2,3,4,5* delims=:;, " %%i in (z.txt) do set st= %%i%%j%%k

rem hier kommen deine Befehle rein zum testen kannst du ja pause einfügen ...

echo %time% >z.txt
for /F "eol=; tokens=1,2,3,4,5* delims=:;, " %%i in (z.txt) do set et= %%i%%j%%k

del z.txt

set /a dif= (%et% - %st%)
set /a std= %dif% / 3600
set /a min= (%dif% - ( 3600 * %std% )) / 60
set /a sek= %dif% - (( %dif% / 60 ) * 60 )

echo Die Laufzeit betrug %std% Stunden %min% Minuten %sek% Sekunden



Lange Version

@echo off

rem --- Erste Zeit nehmen in Datei speichern umwandeln und auf Variable legen ---

echo ----------------------------------
echo %time% >z.txt
for /F "eol=; tokens=1,2,3,4,5* delims=: " %%i in (z.txt) do echo %%i%%j%%k%%l >z.txt
for /F "eol=; tokens=1,2* delims=, " %%i in (z.txt) do set st= %%i%%j
echo %st%
echo ----------------------------------

rem hier kommen deine Befehle rein zum testen kannst du ja pause einfügen ...
rem --- Zweite Zeit nehmen in Datei speichern umwandeln und auf Variable legen ---

echo ----------------------------------
echo %time% >z.txt
for /F "eol=; tokens=1,2,3,4,5* delims=: " %%i in (z.txt) do echo %%i%%j%%k%%l >z.txt
for /F "eol=; tokens=1,2* delims=, " %%i in (z.txt) do set et= %%i%%j
echo %et%
echo ----------------------------------

rem --- Berechnung und Berchnungsdatei löschen ---

echo ----------------------------------

del z.txt

set /a dif= (%et% - %st% ) / 100
set /a std= %dif% / 3600
set /a min= (%dif% - ( 3600 * %std% )) / 60
set /a sek= %dif% - (( %dif% / 60 ) * 60 )
set /a msek= (%et% - %st% ) - (((%et% - %st% ) / 100) * 100 )

echo Die Laufzeit betrug %std% Stunden %min% Minuten %sek% Sekunden %msek% Milisekunden
echo ----------------------------------
Mitglied: Garfieldt
Garfieldt 15.09.2006 um 11:09:28 Uhr
Goto Top
Okay, lasse mich immer wieder gerne eines Besseren belehren, man lernt ja nie aus! Respekt geniale Loesung!
Mitglied: noodles101
noodles101 15.09.2006 um 11:27:52 Uhr
Goto Top
Besten Dank für die Hilfe.

Naja.. die Zeitmessung geht hier zw. 10 - 15 Minuten face-smile

Aber Sekunden ist vollkommen in Ordnung ;)
Mitglied: Metzger-MCP
Metzger-MCP 15.09.2006 um 11:30:04 Uhr
Goto Top
Man tut was man kann ! Der Biber würde da mal wieder ein einzeiler raus machen.
Däfür kennt man Ihn, und seine Lösungen. Vielleicht präsentiert er hier noch eine ...

MFG Metzger
Mitglied: Metzger-MCP
Metzger-MCP 15.09.2006 um 11:35:07 Uhr
Goto Top
Könnte sie auch noch anpassen so das Stunden Minuten Sekunden und so weiter detalierter Dargestellt werden.

P.s

Die Datei liefert nur dann passende Werte, wenn kein Tageswechsel stattfindet.
Aber das wäre auch noch anpassbar.
Mitglied: noodles101
noodles101 15.09.2006 um 12:20:49 Uhr
Goto Top
Also es wäre sehr nett wenn da vielleicht Minuten und Sekunden stehen würde face-smile

Tageswechsel gibt es nicht


aber es passiert was ganz komisches...

irgendwie wird das "pause" und die Ausgabe:

@echo Es dauerte so lange %dif% Sekunden!
@echo Es dauerte so lange %dif% Sekunden! > time.txt

nicht ausgeführt... also die Datei time.txt wird nicht erstellt... dafür ist aber die datei z.txt noch da ;)

alles sehr komisch hier
Mitglied: Metzger-MCP
Metzger-MCP 15.09.2006 um 12:44:40 Uhr
Goto Top
hmmmm komisch bei mir funktionieren alle 3 Teile

Welche Version hast du genommen und wo hast du Pause eingebaut.
Welche taste hast du bei der Pause gedrückt ?

schicke mir doch mal deine Datei zu...

MFG Uwe

P.s. Baue die Zeit um und ändere Sie oben ab