b-real
Goto Top

Zeitstempel erzeugen in Batch Routinen - Bei Stunde wird die Null nicht angezeigt

Hallo Community,

in meinen Batch Routinen verwende ich gerne diesen nützlichen Code um einen Zeitstempel zu erzeugen. Also wenn ich Dateien mit Zeitstempel umbenennen muss, oder in eine Log Datei einen Zeitstempel schreiben will. Kann sein dass ich es sogar hier im Forum gefunden habe, bin mir nicht mehr sicher.

REM Zeitstempel erzeugen
for /f "tokens=1-4 delims=. " %%i in ("%date%") do (  
  set day=%%i
  set month=%%j
  set year=%%k
)

for /f "tokens=1-4 delims=.:, " %%i in ("%time%") do (  
 set hour=%%i
 set minute=%%j
 set second=%%k
 set hundredth=%%l
)

Aufruf zum Zeitstempel erzeugen in meinen Batch Routinen immer via:

call %SystemPath%\TheTime.cmd

Anschließend benenne ich meine Dateien im Batch um, zB mit

ren *.bew FILE.L%hour%%minute%%second%

Das Problem:
Das funktioniert auch, ABER: Aus irgendeinem mir unbekannten Grund wird bei allen Dateien, die vor 10 Uhr vormittags umbenannt werden, die Null bei der Stunde (%hour%) weggelassen.

Zum Beispiel:
  • FILE.L73013 (anstatt FILE.L073013)
  • FILE.L84002 (anstatt FILE.L084002)
  • FILE.L85002 (anstatt FILE.L085002)

Nach 10 Uhr gibt es natürlich keine Null mehr in der Stunde, da passt es dann:
  • FILE.L104001
  • FILE.L144002

Hat jemand eine Idee woran das liegen kann? Danke

Content-Key: 211683

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

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

Member: bastla
bastla Jul 17, 2013 updated at 07:35:26 (UTC)
Goto Top
Hallo B-Real!

Einstellige Stundenwerte enthalten in %time% ein führendes Leerzeichen - daher besser:
for /f "tokens=1-4 delims=.:," %%i in ("%time%") do (  
 set hour=%%i
 set minute=%%j
 set second=%%k
 set hundredth=%%l
)
set "hour=%hour: =0%"  
Grüße
bastla
Member: volkerw
volkerw Jul 17, 2013 at 07:46:31 (UTC)
Goto Top
Hallo B-Real,

da hat bastla recht, time liefert nun mal keine führende Null, aber time /t macht das.
Ersetze einfach "%time%" durch 'time /t', damit geht's.

Gruß
Volker
Member: B-Real
B-Real Jul 17, 2013 updated at 08:07:02 (UTC)
Goto Top
Danke für eure Antworten bastla und Volker,

ich habe es mit 'time /t' versucht, aber dann fehlen die Sekunden und Millisekunden. Dafür steht die Stunde richtig da face-smile.

Hm evtl. könnte ich eine Kombination aus beiden Varianten basteln, die dann funktioniert.
Member: volkerw
volkerw Jul 17, 2013 at 08:22:21 (UTC)
Goto Top
Stimmt, die Sekunden werden bei time /t nicht geliefert, aber warum eine Kombination basteln ?
Bastlas Vorschlag ist die Lösung, das sollte auf jeden Fall funktionieren.
Member: B-Real
B-Real Jul 17, 2013 at 08:56:47 (UTC)
Goto Top
Du hast natürlich Recht Volker, ich hatte übersehen dass bastla in der ersten Zeile ein Leerzeichen entfernt hatte.

for /f "tokens=1-4 delims=.:," %%i in ("%time%") do (   

Bei mir war da immer noch ein Leerzeichen nach dem delims. Somit klappt es perfekt und ist als Gelöst markiert.

Danke euch beiden!