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-ID: 211683

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

Ausgedruckt am: 22.11.2024 um 18:11 Uhr

bastla
bastla 17.07.2013 aktualisiert um 09:35:26 Uhr
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
volkerw
volkerw 17.07.2013 um 09:46:31 Uhr
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
B-Real
B-Real 17.07.2013 aktualisiert um 10:07:02 Uhr
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.
volkerw
volkerw 17.07.2013 um 10:22:21 Uhr
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.
B-Real
B-Real 17.07.2013 um 10:56:47 Uhr
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!