bischoff
Goto Top

Zeit messen zum Erstellen von Dateien mit batch möglich

Hi,

bin gerade dabei ein Batch zu erstellen, um die Perfomance von Anti-Viren Scannern wie Symantec und Sophos zu teste.
Dieser Batch erstellt mehrere Dateien (Variabel) und soll dann die Zeit messen, die benötigt wird, um die Dateien zu erstellen
z.B für 200 Dateienn 3,2 Sekunden oder so etwas in der Art.

Hatte schonmal en andren Threat aufgemacht, indem wurde mir gesagt bei machen Windows Versionen gibt es den Befehl "Timethis"
diesen gibts bei dieser Version leider nicht...

Jetz wollt ich mal fragen obs noch ne andre möglichkeit gibt da z.B beim ping ja auch die Zeit gemessen wird.

Hoffe mir kann jemand helfen hier mal der code der jetzigen Datei:


Timethis Dateienerstellen.cmd

@echo off
set nr=0
set limit=5

:schleife
echo abc[%nr%] >>%0\..\abc%nr%.cmd
set /a nr=%nr%+1

echo erstelle %nr%.cmd

if not %nr% == %limit% goto schleife

pause


Mfg

Content-ID: 92026

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

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

uebeltat
uebeltat 15.07.2008 um 08:24:34 Uhr
Goto Top
Bin zwar nicht der Batch-Profi, aber mein Denkansatz wäre folgender:

Zum Begin der Batch mit "echo %TIME%" die aktuelle Zeit abfragen, nach dem Durchlaufen der Batch die Zeit abfragen und beides in ne Art Log-Datei schreiben. Oder (wie auch immer man dies anstellt, ist aber garantiert möglich) beide Zeiten subtrahieren um die benötigte Zeit in Sekunden zu erhalten...

Wenn sich keiner offenbart werde ich mich mal dransetzen...

LG
Bischoff
Bischoff 15.07.2008 um 08:28:02 Uhr
Goto Top
Hmm

das hört sich schonmal nich schlecht an...
Nur ich bin da auch nich der Profi hab bis vor kurzer Zeit noch nie
mit Batches zu tun gehabt :P

mal schaun ich probiers mal

thx
Mfg
harald21
harald21 15.07.2008 um 08:42:53 Uhr
Goto Top
Hallo,

probier mal folgendes:

echo | time > time.log
Damit wird die aktuelle Uhrzeit in das Logfile geschrieben. Wenn du das zu Beginn und am Ende deiner Batch einfügst, so kannst du hinterher (manuell) die Laufzeit berechnen.

mfg
Harald
Bischoff
Bischoff 15.07.2008 um 09:02:44 Uhr
Goto Top
Also habs jetzmal mit 2 versionen Versucht :P

1.
echo | time >time.log
.
.
code
.
.
echo | time >time.log

pause

Da passiert garnichts...also es wird auch kein Logfile erstellt.


2.
echo | time >>%0\..\time.log


echo | time >>%0\..\time.log


pause


Hier kommt dann diese Meldung in der logdatei:

Aktuelle Zeit: 9:01:41,24
Geben Sie die neue Zeit ein: ECHO ist eingeschaltet (ON).
Eingegebene Zeit kann nicht bernommen werden.
Geben Sie die neue Zeit ein: Aktuelle Zeit: 9:01:41,43
Geben Sie die neue Zeit ein: ECHO ist eingeschaltet (ON).
Eingegebene Zeit kann nicht bernommen werden.
Geben Sie die neue Zeit ein:


Versteh nicht warum er da das zweite mal die Zeit nicht übernimmt
uebeltat
uebeltat 15.07.2008 um 09:05:02 Uhr
Goto Top
Du musst vor und nach "time" noch % setzen.

Also richtig wäre: echo %TIME% >> time.log

face-wink

Grund: Mit "echo time" rufst du den Dos-Befehl "time" auf, der ein eigenständiges Programm ist und mit dem du auf Dos-Ebene die Uhrzeit ändern kannst.

Für deine Zwecke ist aber der Inhalt der Variablen %TIME% von Bedeutung face-wink
Bischoff
Bischoff 15.07.2008 um 09:27:09 Uhr
Goto Top
Aaaja

jetz funktionierts danke.

Mfg
ChrisNick
ChrisNick 15.07.2008 um 22:58:48 Uhr
Goto Top
ECHO OFF

SETLOCAL
CALL :GET_NOW
SET now=%return%
CALL :COMP_CSEC %return%
SET start=%return%

REM Ausführen der Aufgabe
DIR *.* > NUL

CALL :GET_NOW
CALL :COMP_CSEC %return%
CALL :COMP_TIME %start% %return%

REM Info ausgeben i. e. Datei
ECHO Startzeit %now:~0,19% Es hat %return% sec gedauert >>log.dat

GOTO :EOF

:GET_NOW
SET return=%TIME%_%DATE%
IF "%return:~0,1%" EQU " " SET return=0%return:~1%
SET return=%return:~18,4%-%return:~15,2%-%return:~12,2% %return:~0,11%
GOTO :EOF

:COMP_CSEC
SET zeit=%*
SET hours=%zeit:~11,2%
SET mins=%zeit:~14,2%
SET secs=%zeit:~17,2%
SET csec=%zeit:~20,2%
IF "%hours:~0,1%" EQU "0" SET hours=%hours:~1%
IF "%mins:~0,1%" EQU "0" SET mins=%mins:~1%
IF "%secs:~0,1%" EQU "0" SET secs=%secs:~1%
IF "%csec:~0,1%" EQU "0" SET csec=%csec:~1%
SET /A return="((hours * 60 + mins) * 60 + secs) * 100 + csec"
GOTO :EOF

:COMP_TIME
SET /A return=%2 - %1
IF %return% LSS 0 SET /A return=%return% + 8640000
IF "%return:~0,-1%" EQU "" SET return=0%return%
IF "%return:~0,-2%" EQU "" SET return=0%return%
SET return=%return:~0,-2%,%return:~-2%
GOTO :EOF