Batch Datei Ablaufzeit messen?

ace-drink

Lt. Commander
Registriert
Juni 2008
Beiträge
1.303
Hi

Hoffe es passt hier rein.

Hab mir ne *.bat gemacht mit 40 Programmen um zu testen wie der Unterschied der SSD gegenüber meiner alten HDD ist. Das funzt mit

@echo off
start "" "programmpfad/programm.exe"
exit

auch wunderbar. Aber auch nur so. Liegt wohl an den Leerzeichen in einigen Pfaden.

Was ich jetzt will ist, dass mir am Ende der Abarbeitung angezeigt wird, wie lange das Ganze gedauert hat in min:sek.

Geht das überhaupt mit ner batch Datei? Falls nein, wie dann?
 
Ich habe per CAMStudio eine Videoaufnahme gemacht um den Vergleich zu bestimmen, da kannste die Zeit einfach auslesen.
 
Ah habe ne einfache Lösung gefunden.
Einfach am Anfang und Ende der Batch Datei

echo %TIME% >> time.log

einfügen. Dann kann man die Differenz ganz einfach auslesen.

EDIT: Oder auch nicht :-( Die Differnez die da angezeigt wird ist nur im millisekunden Bereich. Das kann nicht stimmen, da es doch einige volle Sekunden dauert. Also weitersuchen. Vielleicht find ich ja ein Tool das einem ne Batch auf Wunsch macht und man sowas einfach anklicken kann
 
Zuletzt bearbeitet:
Doch, die Millisekunden stimmen, denn wenn du die Programme mittels Start aus der Bat aufrufst, dann werden diese sofort als eigener Task gestartet (alle parallel). somit ruft die bat im Bruchteil einer Sekunde alle Programme auf. Wenn die Ablaufzeit wichtig ist, dann den Start Befehl rausnehmen, damit die Ausführung des nächstens Programms erst beginnt, wenn das vorherige beendet wurde.
 
Die Batch-Datei kann ja nicht erkennen, wann alle Programme offen sind (wie auch?), somit bleibt eigentlich nur mit der Stoppuhr zu messen.
 
Stoppuhr würd ich auch vorschlagen; so oft wirst du den Test ja nicht machen und auf ein paar Zehntel kommts da auch nicht an.
 
@TE: versuche das mal, müsste so gehen:

...
ECHO. |TIME > TIME
COPY LOG +TIME
Start /wait "..."
ECHO. |TIME > TIME
COPY LOG +TIME
...

"call" statt "start /wait" kannst du dir auch einmal anschauen.

@Grantig, du hast einen falschen Link, dort steht nicht die Lösung.:)
 
wenn du anstelle von start mit call arbeitest, dann bleibt die batch datei exakt dort stehen bis die programm.exe fertig ist und damit funktioniert auch wieder deine zeitprotokollierung am anfang und ende der batch
 
easy.2ci schrieb:
dann bleibt die batch datei exakt dort stehen bis die programm.exe fertig ist
Das Problem ist, dass dann bei jedem geöffneten Programm gewartet wird, bis das Fenster wieder (per Hand) geschlossen wird.
Das macht das ganze dann auch wieder unbrauchbar für einen Vergleichsbenchmark.

Die einzige sinnvolle Möglichkeit ist wohl wirklich ne Stoppuhr.


engine schrieb:
@Grantig, du hast einen falschen Link, dort steht nicht die Lösung.
klick mal auf meinen Link und dann auf den 2. Treffer, da steht definitiv die richtige Lösung, irgendwas musst du falsch machen...
 
du weisst doch gar nicht ob die Programm.exe ein Fenster öffnet welches wieder von Hand geschlossen werden muss. Evtl. endet diese Anwendung ja auch, wenn die Arbeit erledigt ist.

Und dann ist die Batch richtig:

echo %TIME% >> Logfile.txt
call Benchmark.exe
echo %TIME% >> Logfile.txt
 
Meine Batch sieht jetzt so aus:

echo %TIME% >> Logfile.txt
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
start calc.exe
echo %TIME% >> Logfile.txt



Und die Logfile so:

15:02:57,12
15:02:59,74

Er braucht also 2,62 Sekunden um die ganzen Taschenrechner zu starten.

Klappt doch.... oder hab ich was falsch verstanden?



edit: Mal unabhängig davon ist die Methode eh schwachsinn. Sobald Programmteile im RAM liegen wird beim Anwendungsstart gar nicht mehr auf die SSD zugegriffen.
 
Zuletzt bearbeitet:
Hab deine Batch mal ausprobiert und es klappt nicht.
Da wird nur gestoppt, wie lange die Aufrufe brauchen, aber nicht wirklich, wie lange die Taschenrechner zum öffnen brauchen.

Probiers doch mal ohne schreiben in ein Logfile, sondern einfach so:

Code:
echo %TIME%
start calc.exe
start calc.exe
start calc.exe
....

echo %TIME%
pause

Bei mir siehts dann so aus, dass erst alle Instanzen vom Taschenrechner geöffnet sind, nachdem die Batch schon fertig.
Wie gesagt, es wird nur die Zeit gestoppt, die für die Aufrufe benötigt wird, aber nicht wie lange die Programme zum starten brauchen.
Bei Programmen die etwas länger zum starten brauchen, wird das noch offensichtlicher als beim Taschenrechner.
 
Die Methode IST zweifelhaft. 20 Mal das gleiche Programm zu starten ist kein ordentlicher Wert, sofern eine Zeitmessung betrieben wird. Da springt einmal dein Virenscanner an und hängt hinterher, schon hast ein Prozesswechsel und schon ist deine Zeit absolut nicht mehr repräsentativ.
 
Zurück
Oben