[BATCH] Datum einmal anders

cbtestarossa

Fleet Admiral
Registriert
Okt. 2011
Beiträge
10.401
Also ich möchte eine BAT die folgendes macht
Mir das Datum ausliest und dann in eine Variable TAG schreibt
Aber es soll auch wenn möglich das englische Datumsformat (falls englisches Windows) berücksichtigen.
Der Inhalt der Variable soll dann so aussehen JJJJMMTT (Ohne Punkt)

Mein Code gibt mir bis jetzt für heute 17.11.2017 aus

Code:
@echo off
cls
set TAG=%date%
echo %TAG%
pause

Es soll aber 20171117 ausgeben werden und wenn möglich englisches Datumsformat berücksichtigen
 
Zuletzt bearbeitet:
dein ernst ?

lösch die bindestriche, dann sind sie weg...
ein bisschen eigeninitiative kann es schon sein
 
echt jetzt?

Dann lass doch die Bindestriche weg aus der Codezeile:

set d=%date%
set SORTDATE=%d:~-4%-%d:~3,2%-%d:~0,2%
echo %SORTDATE%

Dann sieht es so aus, wie Du es geschrieben hast:

Es soll aber 20171117 ausgeben werden und wenn möglich englisches Datumsformat berücksichtigen
 
Setze dein Vorhaben in PowerShell um, dann hast du gar keine Probleme.
Code:
$DateStamp = [datetime]::now.tostring('yyyyMMdd')

Wenn es dennoch Batch seien muss, nutze trotzdem Powershell:
Code:
FOR /F "tokens=*" %a in ('powershell -ExecutionPolicy ByPass -Command "& {[datetime]::now.tostring('yyyyMMdd')}"') do SET DateStamp=%a
PowerShell-Skripte machen mit dem angegebenen ExecutionPolicy-Parameter nur Probleme, wenn das Ganze in einer Domäne mit PowerShell-Restriktionen durch Gruppenrichtlinien ausgeführt wird.
Die Scripte müssen dann i.d.R. signiert werden. Wenn PowerShell-Script-Ausführungen allerdings komplett verboten sind, dann muss man mit der IT reden oder auf Alternativen ausweichen.
 
Zuletzt bearbeitet:
Sorry wegen der Bindestriche aber hatte gerade wenig Zeit zum checken.

Die Frage ist nun ob das auch mit einer englischen Version von Windows funkioniert.
So wie jetzt eher nicht.

btw. Wie frage ich eigentlich ab welche Sprache Windows hat?

@DPXone
Ne soll mittels BAT ohne Powershell funzen
 
Zuletzt bearbeitet:
cbtestarossa schrieb:
@DPXone
Ne soll mittels BAT ohne Powershell funzen

Ok, wenn PowerShell nicht mal innerhalb der Batch-Datei aufgerufen werden darf, dann bleibt dir wohl nur noch die Prüfung auf das zurückgegebene Datums-Format, bevor du das Format anpasst oder du bastelst dir irgendwas mit der "Windows Management Instrumentation" (WMI) zusammen, indem du WMIC benutzt.
 
cbtestarossa schrieb:
btw. Wie frage ich eigentlich ab welche Sprache Windows hat?
Man kann in einer Batchdatei die Registry abfragen. Für das Datumsformat ist der Schlüssel "HKEY_CURRENT_USER\Control Panel\International" relevant.
Code:
@ECHO OFF
set Key="HKEY_CURRENT_USER\Control Panel\International" 
for /F "tokens=3" %%a in ('reg query %Key% ^| find /i "LocaleName"') do echo %%a
for /F "tokens=3" %%a in ('reg query %Key% ^| find /i "sShortDate"') do echo %%a
 
Andreas_ schrieb:
Man kann in einer Batchdatei die Registry abfragen. Für das Datumsformat ist der Schlüssel "HKEY_CURRENT_USER\Control Panel\International" relevant.
Code:
@ECHO OFF
set Key="HKEY_CURRENT_USER\Control Panel\International" 
for /F "tokens=3" %%a in ('reg query %Key% ^| find /i "LocaleName"') do echo %%a
for /F "tokens=3" %%a in ('reg query %Key% ^| find /i "sShortDate"') do echo %%a

Dadurch erhält man zwar das aktuelle Datums-Format,
es wird aber dennoch schwer für alle Formate der Locales Englisch und Deutsch String-Manipulationen abzudecken.


Problem ist zwar gelöst, möchte aber noch die WMIC Variante zeigen, falls jemand anders mal ein ähnliches Problem hat.

Mit wmic os get localdatetime /format:list erhält man immer das Datum im folgenden Format (egal welches Ausgabe-Format in Windows eingestellt ist):
20171118090853.828000+060

Durch String-Manipulation erhält man dann das gewünschte Format:
Code:
@echo off
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set datetime=%%I
set rdate=%datetime:~0,4%%datetime:~4,2%%datetime:~6,2%
echo %rdate%
Voraussetzung natürlich, dass man die Windows Management Instrumentation (WMI) nutzen will/darf.
 
Für WMI benötigt der Benutzer spezielle Rechte oder muss lokaler Administrator sein ... das ist leider nicht "universell", es sei denn, das spielt für Dich keine Rolle. Deswegen ja auch der Schlusssatz von DPXone.

Wenn man WMI nicht nutzen kann, wäre eine universelle Lösung, "sShortDate" zu analysieren und mit dem Ergebnis die Ausgabe von %date% zu zerlegen und in der gewünschten Reihenfolge zusammen zu bauen.
 
Zuletzt bearbeitet:
gerade ohne adminrechte
wmic os get localdatetime /format:list
ausgeführt und funzt
keine Ahnung ob es als GAST auch geht.

Seh gerade bei
HKEY_CURRENT_USER\Control Panel\International
einige schöne Einträge wie zB

sLanguage
sCountry
iCountry
Locale
LocaleName
 
Zuletzt bearbeitet:
Ich habe gerade noch einmal nachgeschaut ... Authentifizierte Benutzer haben das Recht WMI Methoden auszuführen und erfasste Daten zu speichern. Das reicht natürlich für die Abfrage von Datum und Uhrzeit.

Sorry - mein Fehler.
 
Zurück
Oben