marcimarc85
Goto Top

Datum und Uhrzeit in Batch als Variable setzten und während der Ausführung immer aktualisieren

Hallo,

ich bastel gerade an einer Batch-Datei die mehrere Scripte ausführen soll, die unterschiedlich lange dauern. ich möchte gern den Start und das ende des jeweiligen Scripts dokumentiert haben. Dazu hab ich mir einen Datum/Uhrzeit Block gebastelt, der angezeigt werden soll und als Variable definiert:

::Systemunabhängiges Datum erzeugen
::-----------------------------------------------------
for /f %%g in ('wmic os get localdatetime ^| find "."') do set _DTS=%%g  

set _day=%_DTS:~6,2%
set _month=%_DTS:~4,2%
set _year=%_DTS:~0,4%

set _hour=%_DTS:~8,2%
set _minute=%_DTS:~10,2%
set _seconds=%_DTS:~12,2%
	
set _datestamp=%_DTS:~0,8%
set _datetime=%_day%.%_month%.%_year% %_hour%:%_minute%:%_seconds% Uhr

Wenn ich jetzt vor dem befehl zum Starten des jeweiligen Scripts
echo Start Script xyz %_datetime%

Bekomme ich als Ausgabe : Start Script xyz 16.10.2018 09:39:25 Uhr

Nun wird der Wert für datetime ja am Beginn der Batch-Datei definiert und ändert sich dadurch nicht mit der aktuellen Uhrzeit, wenn z.B. ein Script durch ist und ich die Ausgabe
echo Ende Script xyz %_datetime%

Dann steht dort weiterhin Ende Script xyz 16.10.2018 09:39:25 Uhr
Also dieselbe Uhrzeit, wie zu Beginn.

Wie bekomme ich es hin, dass sich die Uhrzeit und das Datum (falls der Job über Mitternacht läuft) zu aktualisieren, sodass sie in diesem Format ausgegeben werden?

Content-Key: 389573

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

Printed on: April 25, 2024 at 14:04 o'clock

Member: SlainteMhath
SlainteMhath Oct 16, 2018 at 08:03:13 (UTC)
Goto Top
Moin,

in dem du das Logging in einen Prozedur-Aufruf umwandelst:


Call :Log Start
...
Call :Log Ende

:Log
::Systemunabhängiges Datum erzeugen 
(hier deine Zeilen 3 bis 14)

Echo %1  %_datetime%
goto :EOF

Siehe https://ss64.com/nt/call.html

lg,
Slainte
Member: MarciMarc85
MarciMarc85 Oct 16, 2018 at 08:25:32 (UTC)
Goto Top
Das scheint zu funktionieren. Die Uhrzeit aktualisiert sich durch den Aufruf immer. Danke
wie aber bekomme ich es hin, dass als Ausgabe z.B. kommt Start der Migration 16.10.2018 10:23:15 Uhr ???

Ich muss ja quasi mit dem Befehl echo Start der Migration angefügt von der Ausgabe aus call :Log arbeiten.
Wie kann ich beides zusammensetzten?
Member: Pjordorf
Pjordorf Oct 16, 2018 at 15:18:06 (UTC)
Goto Top
Hallo,

Zitat von @MarciMarc85:
Wie kann ich beides zusammensetzten?
Wie dir geschrieben wurde füge deine Zeilen 3-14 (einschließlich) in dein Script ein. Und passe deine Logausgabe entsprechend an.

Aber vielleicht hat dich hier keiner Verstanden was du willst...

Gruß,
Peter
Member: SlainteMhath
SlainteMhath Oct 17, 2018 at 05:25:09 (UTC)
Goto Top
Ich muss ja quasi mit dem Befehl echo Start der Migration angefügt von der Ausgabe aus call :Log arbeiten.
Wie kann ich beides zusammensetzten?
hm, ich kann nur raten was du meinst...

ersetze "echo %1" mal mit "echo %*"
(hätte man aber auch auf der von mir verlinkten Seite nachlesen können...)