zunaras
Goto Top

Wochentag ermitteln, Samstag und Sonntag mit Fehler

Schönen guten Tag,

ich habe hier ein kleines Skript, mit dem man die Wochentagnummer und den Wochennamen auswertet und zusammenfasst.

REM Wochentag als Zahl
for /F "skip=2 tokens=2-4 delims=," %%A in ('WMIC Path Win32_LocalTime Get DayOfWeek /Format:csv') do set "Tagnummer=%%A"  
echo %Tagnummer%

REM Wochentag ausgeschrieben
set daysofweek=Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag
for /F "tokens=%Tagnummer% delims=," %%B in ("%daysofweek%") do set Tagname=%%B  
echo %Tagname%
Set Wochentag=%Tagnummer%_%Tagname%
echo %Wochentag%

Von Montag bis Freitag ist alles OK. Als Ergebnis kommt z.B. 4_Donnerstag heraus.

Bei Samstag und Sonntag kommt aber ein Fehler -> siehe unten Zeile 10. Könnte mir dabei bitte jemand helfen?
Bei Sonntag kommt z.B. die "0" als Ergebnis statt die "7". Aber damit kann ich leben.

C:\Users\ich\Desktop>REM Wochentag als Zahl

C:\Users\ich\Desktop>for /F "skip=2 tokens=2-4 delims=," %A in ('WMIC Path Win32_LocalTime Get DayOfWeek /Format:csv') do set "Tagnummer=%A"  
" \Users\ich\Desktop>set "Tagnummer=0  
C:\Users\ich\Desktop>echo 0
0
C:\Users\ich\Desktop>REM Wochentag ausgeschrieben
C:\Users\ich\Desktop>set daysofweek=Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag
C:\Users\ich\Desktop>for /F "tokens=0 delims=," %B in ("Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag") do set Tagname=%B  
" delims=,"" kann syntaktisch an dieser Stelle nicht verarbeitet werden.  
C:\Users\ich\Desktop>echo
ECHO ist eingeschaltet (ON).
C:\Users\ich\Desktop>Set Wochentag=0_
C:\Users\ich\Desktop>echo 0_

Viele Grüße

Content-ID: 2795941908

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

Ausgedruckt am: 19.11.2024 um 11:11 Uhr

TK1987
Lösung TK1987 16.05.2022 aktualisiert um 09:50:18 Uhr
Goto Top
Moin,

Zitat von @Zunaras:
Bei Samstag und Sonntag kommt aber ein Fehler -> siehe unten Zeile 10.
Sonntag hat auch den Wert 0 und Montag bis Samstag 1-6. Die Fehlermeldung erscheint, da "Tokens=0" keinen Sinn ergibt.

Könnte mir dabei bitte jemand helfen?
Mit Powershell geht das Ganze erheblich leichter:
Get-Date -Format "dddd"  

Kann man, wenn man unbedingt will, auch von batch aus:
for /f %%B in ('powershell -Command Get-Date -Format "dddd"') do set Tagname=%%B   

Powershell Leitfaden für Anfänger

Gruß Thomas
MrCount
Lösung MrCount 16.05.2022 um 09:26:46 Uhr
Goto Top
Servus,

Bei Sonntag kommt z.B. die "0" als Ergebnis statt die "7". Aber damit kann ich leben.

die 0 für Sonntag ist normal, siehe https://docs.microsoft.com/de-de/previous-versions/windows/desktop/wmiti ...
Zunaras
Zunaras 16.05.2022 um 09:51:09 Uhr
Goto Top
Hallo ihr beiden,

vielen Dank für die Hilfe!

Viele Grüße
Winfried-HH
Winfried-HH 16.05.2022 aktualisiert um 13:40:52 Uhr
Goto Top
Bei Sonntag kommt z.B. die "0"

Logisch, der Sonntag ist ja auch nicht der letzte Tag der Woche, sondern der erste. Die Woche mit ihren sieben Tagen stammt ja aus der biblischen Schöpfungsgeschichte. Der letzte Tag der Schöpfungswoche war der Sabbat, an dem Gott ruhte und auch die Menschen ruhen sollten. Der entspricht aber nicht dem Sonntag, sondern dem Samstag. Dass heute unser "Wochen-Feiertag" der Sonntag ist, liegt an den ersten Christen, die nicht mehr den Sabbat begingen, sondern den Tag der Auferstehung Jesu - und das ist lt. Lk 24,1 der erste Tag der Woche gewesen. Im Laufe der Zeit fielen dann in manche christlich-geprägten Länder der Sonntag mit dem arbeitsfreien Sabbat gefühlt zusammen und der Sonntag wanderte als neuer Sabbat an das Ende der Kalenderwoche. Ich weiß nicht, ob das mit Luther zusammenhängt, der ja das dritte Gebot nicht mehr bibelgetreu mit "Heilige den Sabbat", sondern mit "Heilige den Feiertag" übersetzt hat.

Die angelsächsischen Länder zählen aber weiter richtig, also den Sonntag als ersten Tag der Woche.