Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Zeitdifferenz ermitteln und ausgeben per Batch

Mitglied: Chipy

Chipy (Level 1) - Jetzt verbinden

17.02.2007, aktualisiert 20.02.2007, 8736 Aufrufe, 9 Kommentare

Hi zusammen,

beschäftige mich seit kurzem intensiver mit Batch.

Nun stehe ich vor eine naja nicht gerade problem, aber mich Quält eine frage und zwar
geht dieser Snippsel auch einfacher auszuwerten ?

Ich habe ein Backupscript geschrieben läuft auch einwandfrei.
Nun erstelle ich mir dementsprechend auch ein Logfile. Aber wenn die Datensicherung durch ist möchte ich im Logfile
die Gesamtzeit stehen haben die das Backup gebraucht hat.

Habe mir dazu folgendes nun zusammengestrickt :

01.
@Echo Off & SetLocal
02.
 
03.
:: Vitruellen Wert Setzen
04.
Set Virt=1000000
05.
 
06.
:: Aktuelle Zeit in eine Datei speichern
07.
Echo %time% >zeit.tmp
08.
 
09.
:: Gespeicherte Datei mit Zeit formatieren
10.
FOR /F "tokens=1,2,3 delims=:," %%a in (zeit.tmp) do set timeA=%%a%%b%%c
11.
 
12.
:: Zum testen 5 sekunden warten / Hier würde mein Backup (rar) nun starten
13.
wait 5
14.
 
15.
:: Wieder aktuelle Zeit in eine Datei speichern
16.
Echo %time% >zeit.tmp
17.
:: Und hier wieder die Zeit formatieren
18.
FOR /F "tokens=1,2,3 delims=:," %%a in (zeit.tmp) do set timeB=%%a%%b%%c
19.
 
20.
:: die 2 gespeicherten Zeiten ausrechnen und die differenz speichern
21.
:: Virtuellen Wert mit differnz zusammenrechnen
22.
set /a VirtA=%timeB%-%timeA% && set /a VirtB=%Virt%+%VirtA%
23.
 
24.
:: Das Entergebniss in einem leserlichen Format mit : speichern.
25.
set ErG=%VirtB:~1,2%:%VirtB:~3,2%:%VirtB:~-2%
26.
 
27.
:: Ergebniss ausgeben
28.
Echo Dauer %ErG%
[Edit Biber] Nach Rücksprache per PN mit Chipy Beitrag auf gelöst und geschlossen gesetzt am 21.02.2007 [/Edit]
Mitglied: Dani
17.02.2007 um 22:03 Uhr
G' Abend,
also ich habe mal ein bisschen "gekürtzt".
Das ist übrig geblieben:
01.
@echo Off & SetLocal
02.
 
03.
:: Vitruellen Wert Setzen
04.
set Virt=1000000
05.
 
06.
for /f "delims=:, tokens=1,2,3" %%a in ('echo %time%') do set timeA=%%a%%b%%c
07.
ping 127.0.0.1 -n 5 >nul
08.
for /f "tokens=1,2,3 delims=:," %%a in ('echo %time%') do set timeB=%%a%%b%%c
09.
 
10.
set /a VirtB=%Virt%+(%timeB%-%timeA%)
11.
echo Dauer: %VirtB:~1,2%:%VirtB:~3,2%:%VirtB:~-2%
Jedoch der Set Befehl erzeugt einen Fehler (Fehlende Klammer). Warum?? Weiß ich gerade auch nicht. Ansonsten würde es so gehen!! Hoffe, dass ich dich ein Stück weitergebracht habe.


Grüße
Dani
Bitte warten ..
Mitglied: bastla
18.02.2007 um 05:48 Uhr
@Dani

Warum??

Das "echo %time%" sollte ein Komma vor den Hundertstelsekunden (die hier übrigens total vernachlässigt werden - da muss man die Genauigkeit dieser Messung dann aber schon anzweifeln ) liefern, ersetzt es aber durch eine Leerstelle - also:
01.
for /f "tokens=1,2,3 delims=:, " ...
Wenn das Komma schon nichts nützt, sollte es zumindest auch nicht schaden - daher zur Sicherheit dabei lassen ...

Grüße
bastla
Bitte warten ..
Mitglied: Chipy
18.02.2007 um 11:07 Uhr
Moin Bastla,

naja die Hundertstel benötige ich nicht unbedingt *gg
Weil so genau muss ich es nicht wissen ob er 1-2-3 hunderstel schneller oder langsamer war.
Daher dann auch das entfernen ;)


@Dani

Ich schau mir dein Snippsel mal an ;)

THX


@Dani

> Warum??

Das "echo %time%" sollte ein Komma
vor den Hundertstelsekunden (die hier
übrigens total vernachlässigt
werden - da muss man die Genauigkeit dieser
Messung dann aber schon anzweifeln )
liefern, ersetzt es aber durch eine
Leerstelle - also:
01.
for /f "tokens=1,2,3
02.
> delims=:, " ...
03.
> 
Wenn das Komma schon nichts
nützt, sollte es zumindest auch nicht
schaden - daher zur Sicherheit dabei lassen
...

Grüße
bastla
Bitte warten ..
Mitglied: Chipy
18.02.2007 um 11:50 Uhr
Hi,

@ Dani

habe auch noch was gefunden *gg
die tokens kann man noch zusammenfassen.
Sieht nun kürzer aus aber ............ ;)

Sollte so entgültig sein :

@echo Off & SetLocal

for /f "tokens=1-3 delims=: " %%a in ('echo %time%') do set timeA=%%a%%b%%c

wait 5

for /f "tokens=1-3 delims=: " %%a in ('echo %time%') do set timeB=%%a%%b%%c

set Virt=1000000
set /a VirtB=%Virt%+(%timeB%-%timeA%)

echo Dauer: %VirtB:~1,2%:%VirtB:~3,2%:%VirtB:~-2%





@bastla

wie du schon erwähntest, das Komma kann man knicken hat keinen einfluss darauf mehr
war nur von nöten wo die Zeit noch in einem textfile gespeichert war.
Seit dani´s lösung den Zeitwert direkt als Set zu setzen ist das komma egal und das leerzeichen ist von nöten.
Ich frage mich allerdings warum er den Zeitwert mit einem leerzeichen anlegt, mhhhhhh






G' Abend,
also ich habe mal ein bisschen
"gekürtzt".
Das ist übrig geblieben:
01.
@echo Off & SetLocal
02.
> 
03.
> :: Vitruellen Wert Setzen
04.
> set Virt=1000000
05.
> 
06.
> for /f "delims=:, tokens=1,2,3"
07.
> %%a in ('echo %time%') do set
08.
> timeA=%%a%%b%%c
09.
> ping 127.0.0.1 -n 5 >nul
10.
> for /f "tokens=1,2,3 delims=:,"
11.
> %%a in ('echo %time%') do set
12.
> timeB=%%a%%b%%c
13.
> 
14.
> set /a VirtB=%Virt%+(%timeB%-%timeA%)
15.
> echo Dauer:
16.
> %VirtB:~1,2%:%VirtB:~3,2%:%VirtB:~-2%
17.
> 
Jedoch der Set Befehl erzeugt einen Fehler
(Fehlende Klammer). Warum?? Weiß ich
gerade auch nicht. Ansonsten würde es so
gehen!! Hoffe, dass ich dich ein Stück
weitergebracht habe.


Grüße
Dani



EDIT:
konnte Virt Zeile doch nicht mit && zusammensetzen
Bitte warten ..
Mitglied: bastla
18.02.2007 um 14:32 Uhr
@Chipy

Wenn Du denn gesteigerten Wert auf Kürzerfassungen (noch nicht "Kürzest" - Biber war noch nicht da) legst (geht's Dir also doch um Sekundenbruchteile bei der Laufzeit ):
01.
@echo Off & SetLocal
02.
for /f "tokens=1-3 delims=: " %%a in ('echo %time%') do set timeA=%%a%%b%%c
03.
sleep 5
04.
for /f "tokens=1-3 delims=: " %%a in ('echo %time%') do set timeB=%%a%%b%%c
05.
set /a VirtB=1000000+%timeB%-%timeA%
06.
echo Dauer: %VirtB:~1,2%:%VirtB:~3,2%:%VirtB:~-2%
Die Variablennamen verkürze ich aber nimmer ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
18.02.2007 um 14:56 Uhr
Moin Chipy,

ich würde einen anderen Ansatz wählen.

Meine Skizze:
01.
@echo off & setlocal
02.
for /f "tokens=1-3 delims=:," %%i in ("%time%") do set /a start=%%i*3600+60*%%j+%%k
03.
REM Variable %Start% hat jetzt einen in Sekunden umgerechneten %time%-Wert.
04.
 
05.
Pause
06.
REM Wo jetzt pause steht, ist natürlich der MachMirDenBackup-Teil
07.
 
08.
for /f "tokens=1-3 delims=:," %%i in ("%time%") do set /a stop=%%i*3600+60*%%j+%%k
09.
REM Auch Variable %Stop% hat jetzt einen in Sekunden umgerechneten %time%-Wert.
10.
Set /a DauerInMin=(stop-start) %% 60
11.
Set /a UndRestInSecs= (stop-start) - DauerInMin*60 
12.
Echo Gedauert hat es %dauerInMin%:%UndRestInSecs%
13.
REM Oder formatiert:
14.
Set /a FmtSecs=UndRestInSecs+100
15.
Set /a FmtMins=DauerInMin+100
16.
Echo Gedauert hat es %FmMins:~-2%:%FmtSecs:~-2%
[...ungetestete Skizze]

Gruss
Biber
Bitte warten ..
Mitglied: Chipy
18.02.2007 um 20:32 Uhr
Moin Biber,

Schöner Source aber die ausrechnung hat kein Hand und kein Fuss ;)
Ich weiss , schreibtest ja nicht getestet.
Es kommt nur Quak raus, habe mal extra was in Stunden errechnen lassen und dann wiederum in Sekunden.
Das Ergebniss ist erschreckend ;)

Erläutere mir doch mal bitte 3 Sachen :

start=%%i*3600+60*%%j+%%k

und

DauerInMin=(stop-start) %% 60 <- Wozu %%60 ?

und zu guter letzt :

FmtSecs=UndRestInSecs+100


Irgendwie komme ich wenn ich das auch manuell nachrechne zu unlogischen ergebnissen ;)
Sorry für meine Unverfrohrenheit .

@bastla habe noch was gefunden *gg

dank Biber fiel mir das auf : ("%time%") kann man sich das Echo sparen

Gruss Chipy


Moin Chipy,

ich würde einen anderen Ansatz
wählen.

Meine Skizze:
01.
@echo off & setlocal
02.
> for /f "tokens=1-3 delims=:," %%i
03.
> in ("%time%") do set /a
04.
> start=%%i*3600+60*%%j+%%k
05.
> REM Variable %Start% hat jetzt einen in
06.
> Sekunden umgerechneten %time%-Wert.
07.
> 
08.
> Pause
09.
> REM Wo jetzt pause steht, ist natürlich
10.
> der MachMirDenBackup-Teil
11.
> 
12.
> for /f "tokens=1-3 delims=:," %%i
13.
> in ("%time%") do set /a
14.
> stop=%%i*3600+60*%%j+%%k
15.
> REM Auch Variable %Stop% hat jetzt einen in
16.
> Sekunden umgerechneten %time%-Wert.
17.
> Set /a DauerInMin=(stop-start) %% 60
18.
> Set /a UndRestInSecs= (stop-start) -
19.
> DauerInMin*60 
20.
> Echo Gedauert hat es
21.
> %dauerInMin%:%UndRestInSecs%
22.
> REM Oder formatiert:
23.
> Set /a FmtSecs=UndRestInSecs+100
24.
> Set /a FmtMins=DauerInMin+100
25.
> Echo Gedauert hat es
26.
> %FmMins:~-2%:%FmtSecs:~-2%
27.
> 
[...ungetestete Skizze]

Gruss
Biber
Bitte warten ..
Mitglied: Biber
18.02.2007 um 22:01 Uhr
Moin Chipy,

start=%%i*3600+60*%%j+%%k
Na ja, das stimmte noch um 21:52:34,24..
set /a start=21*3600+60*52+34
78754

...aber das war in der Tat Bullshit:

DauerInMin=(stop-start) %% 60 <- Wozu %%60 ?
Natürlich nicht Modulo 60 sondern geteilt durch 60.
DauerInMin=(stop-start)/ 60

Der Rest mit den Fmtxxx-Variablen ist nur Spielerei zur Formatierung im hh:mm-Format.

Gruss
Biber
Bitte warten ..
Mitglied: Biber
20.02.2007 um 09:18 Uhr
Moin Chipy,

nach Deinen mahnenden Worten hier noch mal die oberflächlich getestete Version meiner damaligen Skizze.

01.
::---ShowTime.bat Biber 2007 Sinnfreier Batch zur Demo Zeitdaueranzeige im Batch
02.
@echo off & setlocal
03.
 
04.
for /f "tokens=1-3 delims=:," %%i in ("%time%") do set /a start=%%i*3600+60*(1%%j %% 100)+1%%k-100
05.
REM Variable %Start% hat jetzt einen in Sekunden umgerechneten %time%-Wert.
06.
Pause
07.
REM Wo jetzt pause steht, ist natürlich der MachMirDenBackup-Teil
08.
for /f "tokens=1-3 delims=:," %%i in ("%time%") do set /a stop=%%i*3600+60*(1%%j %% 100)+1%%k-100
09.
REM Auch Variable %Stop% hat jetzt einen in Sekunden umgerechneten %time%-Wert.
10.
Set /a DauerInMin=(stop-start) / 60
11.
Set /a UndRestInSecs= (stop-start) - DauerInMin*60 
12.
@Echo [Unformatiert] Gedauert hat es %dauerInMin%:%UndRestInSecs%
13.
REM Oder formatiert:
14.
Set /a FmtSecs=UndRestInSecs+100
15.
Set /a FmtMins=DauerInMin+100
16.
@Echo [Formatiert] Gedauert hat es %FmtMins:~-2%:%FmtSecs:~-2%
Demo:
01.
>f:\temp\ShowTime.bat
02.
Drücken Sie eine beliebige Taste . .
03.
[Unformatiert] Gedauert hat es 1:2
04.
[Formatiert] Gedauert hat es 01:02
Gruss
Biber
Bitte warten ..
Ähnliche Inhalte
Datenbanken
Zeitdifferenz berechnen MSSQL
Frage von EricAG3Datenbanken3 Kommentare

Hallo zusammen, ich würde gerne die Produktionszeit je Tag errechnen und ausgeben: Ich habe schon ein wenig mit datediff ...

Batch & Shell

Batch - Laufwerksbuchstaben ermitteln, findstr buchstäblich

gelöst Frage von m.fesslerBatch & Shell2 Kommentare

Einen schönen guten Tag, möchte in einer Batch den Laufwerksbuchstaben eines bestimmten Laufwerks ermitteln. Derweil habe ich: Allerdings habe ...

Batch & Shell

Batch - Differenz zwischen zwei Zeilen ermitteln

Frage von ooDavidBatch & Shell3 Kommentare

Hi, ich habe ein Textfile in der in jeder Zeile eine Zahl steht (Sekunden). 380 428 455 458 464 ...

Batch & Shell

Batch oder PS um Datenvolumen zu ermitteln

gelöst Frage von rudeboyBatch & Shell13 Kommentare

Guten Morgen zusammen, ist es möglich mit Hilfe von Batch oder PS-Skript die über die Netzwerkschnittstelle übertragene Datenmenge zB ...

Neue Wissensbeiträge
iOS
WatchChat für Whatsapp
Tipp von Criemo vor 1 TagiOS3 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor !!!
Tipp von Criemo vor 1 TagiOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Off Topic
Avengers 4: Endgame - Erster Trailer
Information von Frank vor 4 TagenOff Topic2 Kommentare

Ich weiß es ist Off Topic, aber ich freue mich auf diesen Film und vielleicht geht es anderen hier ...

Webbrowser
Microsoft bestätigt Edge mit Chromium-Kern
Information von Frank vor 4 TagenWebbrowser5 Kommentare

Microsoft hat nun in seinem Blog bestätigt, dass die nächste Edge Version kein EdgeHTML mehr für die Darstellung benutzen ...

Heiß diskutierte Inhalte
Windows Netzwerk
Kerio. Kann keine Mails empfangen aber senden. Wer ist schuld. Kerio oder Windows domäne?
gelöst Frage von frosch2Windows Netzwerk27 Kommentare

Hallo, es existiert ein Problem bei uns mit dem mailen. Alle bestehenden Nutzer können mailen. Raus wie rein. Neuen ...

Hosting & Housing
VMware VM mit über 1TB RAM für S4HANA
Frage von Leo-leHosting & Housing22 Kommentare

Hallo zusammen, wer hat Erfahrng und kann mir einen Tipp zum sizing von S4HANA Systemen geben? Wir möchten, zunächst ...

LAN, WAN, Wireless
WLAN und Ausmessung - Eine Glaubensfrage?
Frage von ptr2brainLAN, WAN, Wireless20 Kommentare

Liebe Experten, als Sys-Admin habe ich mir schon öfter die Frage gestellt, ob es sich beim Thema WLAN und ...

Virtualisierung
Gebrauchte Server Hardware als Virtualisierungs-"Spielwiese"?
Frage von NixVerstehenVirtualisierung19 Kommentare

Einen wunderschönen guten Morgen zusammen, ich möchte mich gerne etwas tiefer mit dem Thema Virtualisierung beschäftigen und dazu ein ...