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

Ausgedruckt am: 19.03.2024 um 09:03 Uhr

Mitglied: SlainteMhath
SlainteMhath 16.10.2018 um 10:03:13 Uhr
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
Mitglied: MarciMarc85
MarciMarc85 16.10.2018 um 10:25:32 Uhr
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?
Mitglied: Pjordorf
Pjordorf 16.10.2018 um 17:18:06 Uhr
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
Mitglied: SlainteMhath
SlainteMhath 17.10.2018 um 07:25:09 Uhr
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...)