cmd: unterschiedliche Datumschreibweisen abfangen / auflösen

tomm1984

Lt. Junior Grade
Registriert
Juni 2016
Beiträge
352
Geschätztes Forum,

per cmd führt die Variable %date% auf zwei verschiedenen PC's zu:
  1. Sat 07/05/2022
  2. 07.05.2022
Das dürfte mit den Datumsformat- und Regions-Einstellungen zu tun haben.

Nun möchte ich gern die unterschiedliche Schreibweise abfangen / abfragen, so dass ich für die weitere Verarbeitung nur 07/05/2022 bzw. 07.05.2022 habe. Die Trennung durch / oder . spielt dabei keine Rolle, da ich das Datum dann später ohnehin in the einzelnen Bestandteile Tag, Monat, Jahr aufteile und deshalb der Trenner keine Rolle spielt.

Gibt es eine Art internes Datumsformat, welches immer gleich ist, egal, welche Formate und Regionen eingestellt sind?

Danke für Support!
 
Powershell nehmen und im Zweifel, wenn es absolut unvermeidlich unbedingt Batch sein muß, PS aufrufen als powershell -command ... bzw. powershell -file ... .

Da kann man dann Standardformate zurückgeben lassen oder auch eigene definieren.
 
hmm ... wieder von Hölzchen zu Stöckchen (ich habs befürchtet :-D) ... ich weiß ja, dass cmd nicht das geeignetste Tool ist.

evtl. über eine IF-Abfrage, die die Länge prüft und dann ggf. vorne 4 Zeichen abschneidet?
 
https://kleinfelter.com/windows-batch-file-format-date-as-yyyymmdd

Das funktioniert:
1651923658927.png


Musst du halt für deine Ansprüche etwas anpassen.
 
  • Gefällt mir
Reaktionen: tollertyp
Der in der Batch von tollertyp verwendete Befehl wmic ist "deprecated"/veraltet und wird zukünftig entfernt werden.
Darauf würde ich nicht mein Script aufbauen wollen.
 
  • Gefällt mir
Reaktionen: NotNerdNotDau
Sofern auf den Systemen die Powershell drauf ist, wäre das wohl auch der bessere Weg:
Code:
@Echo off
For /f "delims=" %%A in ('powershell get-date -format "{yyyy.MM.dd}"') do @set YYYYMMDD=%%A
echo YYYYMMDD is %YYYYMMDD%
echo Year: %YYYYMMDD:~0,4%
echo Month: %YYYYMMDD:~5,2%
echo Day: %YYYYMMDD:~8,2%

Auch wenn ich ehrlich gesagt nicht damit rechne, dass wmic in absehbarer Zeit rausfliegt...
 
JennyCB schrieb:
Der in der Batch von tollertyp verwendete Befehl wmic ist "deprecated"/veraltet und wird zukünftig entfernt werden.
Darauf würde ich nicht mein Script aufbauen wollen.
Danke für diesen Hinweis mit Weitblick. Gut zu wissen und, wie gesagt, danke.

tollertyp schrieb:
Sofern auf den Systemen die Powershell drauf ist, wäre das wohl auch der bessere Weg:
Code:
@Echo off
For /f "delims=" %%A in ('powershell get-date -format "{yyyy.MM.dd}"') do @set YYYYMMDD=%%A
echo YYYYMMDD is %YYYYMMDD%
echo Year: %YYYYMMDD:~0,4%
echo Month: %YYYYMMDD:~5,2%
echo Day: %YYYYMMDD:~8,2%

Auch wenn ich ehrlich gesagt nicht damit rechne, dass wmic in absehbarer Zeit rausfliegt...

ah ja cool! das ist super. ich kann im batch bleiben und rufe darin ps auf.
das ist dann natürlich echt sauber. baue ich gleich ein und habe damit lange Ruhe.

Cool, cool :-) happy
 
  • Gefällt mir
Reaktionen: tollertyp
Evtl ist die Variante noch etwas schöner:
Code:
@echo off
for /f "tokens=1-3 delims=-" %%a in ('PowerShell -Command "& {Get-Date -format "yyyy-MM-dd"}"') do (
    set year=%%a
    set month=%%b
    set day=%%c
)

echo year: %year%
echo month: %month%
echo day: %day%
 
  • Gefällt mir
Reaktionen: Darkman.X und tomm1984
tollertyp schrieb:
Evtl ist die Variante noch etwas schöner:
Code:
@echo off
for /f "tokens=1-3 delims=-" %%a in ('PowerShell -Command "& {Get-Date -format "yyyy-MM-dd"}"') do (
    set year=%%a
    set month=%%b
    set day=%%c
)

echo year: %year%
echo month: %month%
echo day: %day%
jupp. sieht auch gut aus ... gerade getestet. Danke!
 
  • Gefällt mir
Reaktionen: tollertyp
Geht auch mit WMIC:

Code:
for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined _localdatetime set _localdatetime=%%x
set _Today=%_localdatetime:~0,4%-%_localdatetime:~4,2%-%_localdatetime:~6,2%
set _Time=%_localdatetime:~8,2%-%_localdatetime:~10,2%
echo Datum: %_Today%   Uhrzeit: %_Time%
 
Nicht nur, dass bereits eine Lösuing mit WMIC gepostet wurde, es wurde auch geschrieben, warum man sie vielleicht nicht mehr nehmen sollte, wenn es auch andere Wege gibt.

Aber ist verständlich, dass bei einem Thread, wo seit Tagen keine Aktivität mehr war, keine Zeit war, alles durchzulesen.
 
  • Gefällt mir
Reaktionen: Darkman.X
"Batch is a Bitch" und schon lange nicht mehr zeitgemäß und wmic ist ein Auslaufmodell.
Anstatt wmic sollte man Get-CimInstance verwenden und sich daran gewöhnen.
 
Zurück
Oben