Re: Dauer von Code in Batch-Datei
...und %Time% ruft nicht den Befehl auf, sondern wird wie eine Umgebungsvariable mit der aktuellen Zeit "gefüllt". Womit sich das dann zuweisen lässt.
Option /T zeigt nur die Zeit im Format SS:MM (zumindest bei mir), was wohl zu ungenau wäre. |
Re: Dauer von Code in Batch-Datei
bei der Berechnung aus Post #5 ... zusammen mit %date" wäre das Problem mit dem Tageswechsel gelößt,
aber man muß beim Parsen aufpassen, da für %time% und %date% das aktuelle Datums-/Zeitformat genutzt wird (die Trennzeichen und Reinfolge der Zahlen sind also Systemabhängig) |
Re: Dauer von Code in Batch-Datei
So ist es.
Bei dem Script aus Post #5 gibt es bei der Zeitberechnung Fehler zB. wenn "10:00:00 - 09:55:02" berechnet wird. Ich habe mal was zusammengeklöppelt ohne eine Temp-.Datei zu benötigen:
Code:
Jetzt müsste man nur noch das Datumsgedöns und den Tegeswechsel mit einbeziehen.
@ECHO OFF
REM --- Start der Zeitmessung ------------------------------------------------ FOR /F "eol=; tokens=1,2,3,4,5* delims=:;, " %%i IN ("%TIME%") DO ( SET /A sDezTime= %%i * 3600 + %%j * 60 + %%k ) FOR /F "eol=; tokens=1,2,3,4,5* delims=:;,. " %%i IN ("%DATE%") DO ( SET sDateDay= %%i%%j%%k ) REM === Zu messende Action =================================================== REM pause REM REM ========================================================================== REM --- Ende der Zeitmessung ------------------------------------------------- FOR /F "eol=; tokens=1,2,3,4,5* delims=:;, " %%i in ("%TIME%") DO ( SET /A eDezTime= %%i * 3600 + %%j*60 + %%k ) FOR /F "eol=; tokens=1,2,3,4,5* delims=:;,. " %%i IN ("%DATE%") DO ( SET eDateDay= %%i%%j%%k ) REM --- Datumdifferenz berechnen --------------------------------------------- SET /A DateDif= (%eDateDay% - %sDateDay%) REM --- Zeitdifferenz berechnen ---------------------------------------------- SET /A TimeDif= (%eDezTime% - %sDezTime%) SET /A Hour= %TimeDif% / 3600 SET /A TimeDif= %TimeDif% %% 3600 SET /A Minut= %TimeDif% / 60 SET /A TimeDif= %TimeDif% %% 60 SET /A Secund= %TimeDif% REM --- Zeitausgabe ---------------------------------------------------------- ECHO. ECHO Tage: %DateDif% (Fehlerbehafted !) ECHO Die Laufzeit betrug %Hour%:%Minut%:%Secund% h ECHO. REM --- Variablen zurueckdetzen ----------------------------------------------- REM --- "SETLOCAL" währe wol auch eine Moeglichkeit ;-) SET sDateDay= SET eDezDate= SET DateDif= SET sDezTime= SET eDezTime= SET TimeDif= SET Hour= SET Minut= SET Secund= Das ist mir aber zu komplex. |
Re: Dauer von Code in Batch-Datei
Zitat:
|
Re: Dauer von Code in Batch-Datei
@ turboPASCAL: Also das ist mir dann doch etwas zu viel Overkill. Da ist ja der Code für die zeitmessung länger und komplexer als der eigentliche Code für den ich die Batch-Datei erstellt habe. Das steht dann doch in keinem Verhältnis mehr.
|
Re: Dauer von Code in Batch-Datei
Und was spricht jetzt unbedingt gegen ein Extraprogramm? (muß ja nicht aufwendig sein)
Delphi-Quellcode:
Program CalcTime;
{$APPTYPE CONSOLE} Uses SysUtils; Var N: String; F: TextFile; T: TDateTime; Begin Try N := ChangeFileExt(ParamStr(0), '.time'); If SameText(ParamStr(1), '/start') Then Begin Assign(F, N); Rewrite(F); Write(F, Now); CloseFile(F); End Else If SameText(ParamStr(1), '/stop') Then Begin Assign(F, N); Reset(F); Read(F, T); CloseFile(F); DeleteFile(N); WriteLn(TimeToStr(Now - T)); End Else Raise Exception.Create('unknown parameter'); Except On E: Exception do Writeln(E.Classname, ': ', E.Message); End; End.
Code:
oder
CalcTime /start
... CalcTime /stop
Code:
CalcTime /start
... CalcTime /stop > Logfile.txt (ungetestet ... nur mal schnell so zusammengetippt) |
Re: Dauer von Code in Batch-Datei
Weil ich es so einfach wie möglich halten wollte. Und das anzeigen der Dauer eigentlich nur ein netter Gimmick gewesen wäre.
|
Re: Dauer von Code in Batch-Datei
Zitat:
Nur ein Tageswechsel mit einzubeziehen, das wäre Overkill. :mrgreen:
Code:
@ECHO OFF
FOR /F "eol=; tokens=1,2,3,4,5* delims=:;, " %%i IN ("%TIME%") DO SET /A sDezTime= %%i * 3600 + %%j * 60 + %%k REM === Zu messende Action =================================================== REM PS.: call 7z ... ist sehr leicht lesbar. ;-) xcopy "C:\Programme\MySQL\MySQL Server 6.0\data\products_mpu" "d:\Datenbanken\MySQL\products_mpu" /E /C /I /Y call 7z -t7z -mx=1 -ms=off -slp a "q:\eigene Dateien\files_%date%.7z" "d:\" -x!"d:\~Austausch" -x!"d:\Ausbildung FIAE" -x!"d:\Homepage" -x!"d:\Borland Studio Projects" -x!"d:\Borland Studio-Projekte" -x!"d:\Eigene Musik\" -x!"d:\Eigene Videos" -x!"d:\RECYCLER" -x!"d:\System Volume Information" -x!"d:\Visual Studio 2005" -x!"d:\Visual Studio 2008" -x!"d:\FrostWire" REM ========================================================================== FOR /F "eol=; tokens=1,2,3,4,5* delims=:;, " %%i in ("%TIME%") DO SET /A eDezTime= %%i * 3600 + %%j*60 + %%k) SET /A TimeDif= (%eDezTime% - %sDezTime%) SET /A Hour= %TimeDif% / 3600 SET /A TimeDif= %TimeDif% %% 3600 SET /A Minut= %TimeDif% / 60 SET /A TimeDif= %TimeDif% %% 60 SET /A Secund= %TimeDif% ECHO. ECHO Die Laufzeit des Backups betrug %Hour%:%Minut%:%Secund% h ECHO. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz