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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 92026
Url: https://administrator.de/contentid/92026
Ausgedruckt am: 12.11.2024 um 22:11 Uhr
7 Kommentare
Neuester Kommentar
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
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
Du musst vor und nach "time" noch % setzen.
Also richtig wäre: echo %TIME% >> time.log
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
Also richtig wäre: echo %TIME% >> time.log
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
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
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