goodbytes
Goto Top

Variablen in Batch-Dateien

Hallo,
ich habe mehrere Batchdateien erstellt zur Systempflege (Datenträgerbereinigung, Temp-Dateien löschen, Protokolle löschen, Defragmentierung, Acronis-Backup).
Zwecks Protokollierung wird eine Logdatei erstellt. Allerdings möchte ich das Datum und die Uhrzeit in einem bestimmten Format eintragen.

Da während des Vorgangs auch einige Neustart`s notwendig sind (ich benutze Drive.Keeper für meine Internet-Partition, da z.B. die Defragmentierung mittels O&O-defrag bei aktiv nicht möglich ist), und auch die Ausführung der Haupt-Batch (insgesamt rund 550 Zeilen) die Zeit vergeht, muss ich ständig vor einem Protokoll-Eintrag die Uhrzei-Variable aktuallisieren. Klar, ich könnte auch einfach %TIME% nutzen, aber das möchte ich nicht. Es geht mir da irgendwie um`s Prinzip.

Gibt es eine Möglichkeit, wenn ich innerhalb der Batch mittels GOTO zu einer Stelle springe, hier die Variable aktuallisiere, und dann zum Ausgang zurückkehre und fortsetze?
Oder muss ich wirklich den Umweg über eine extra Batch mittels CALL gehen? Ich fände es interessanter es innerhalb der Batch abzuwickeln. Ich könnte natürlich für jede Aktuallisierung der Variablen eine extra Sprungadresse machen. Aber das währe ja nicht gerade elegant. Da kann ich es ja auch gleich (wie es jetzt ist) unmittelbar vor dem Logeintrag reinsetzen.

Es interessiert mich ganz einfach, ob es da auch eine andere Lösung geben könnte.

Hier meine zwei formatierten Variablen, die ich immer wieder aktuallisieren muss:

SET DATUM=%date:~-4%-%date:~3,2%-%date:~0,2%
SET UHRZEIT=%TIME% & for /F "tokens=1-3 delims=:," %%i in ("%TIME%") do SET "UHRZEIT=%%i:%%j"  

Bin ja mal gespannt, ob es da doch eine Lösung gibt...

Gruß
Torsten

Content-Key: 162973

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

Printed on: April 23, 2024 at 21:04 o'clock

Member: bastla
bastla Mar 18, 2011 at 21:02:45 (UTC)
Goto Top
Hallo TorstenB!

Soferne ich Dich richtig verstehe, benötigst Du ein Unterprogramm - daher einfach
...
call :GetTime
echo %DATUM% %UHRZEIT%
...
goto :eof

:GetTime
SET "DATUM=%date:~-4%-%date:~-7,2%-%date:~-10,2%"  
for /F %%i in ('time /t') do SET "UHRZEIT=%%i"  
goto :eof
Grüße
bastla
Member: goodbytes
goodbytes Mar 19, 2011 at 09:11:31 (UTC)
Goto Top
Hallo bastla,
genau das ist es!

Manchmal kann es ja so einfach sein; ich hätte mir nur die call-Optionen genauer ansehen müssen...

Ich war beisher immer der Meinung, dass ich damit nur Externes aufrufen kann. Jetzt bin ich eines besseren belehrt...

Vielen Dank, bastla !!! face-smile

Gruß
Torsten