Kalenderwoche ausrechnen
Hallo Zusammen,
Ich muss eine Batchdatei schreiben, die die Kalenderwoche ausgibt. Ich habe schon den grössten Teil herausgefunden wie ihr unten sehen könnt.
Aber es ist noch nicht ganz richtig, wie muss ich das Jahr noch einbeziehen, damit ich die richtige Wochenzahl bekomme?
Ich danke jetzt schon mal für eure Antworten.
@echo OFF
SET /P DATUMA=Geben Sie das Datum ein (DD:MM:JJJJ):
SET RECHNUNG=%DATE:~0,2%.%DATE:~3,2%.%DATE:~6,0%
FOR /F "TOKENS=1,2 DELIMS=. " %%A IN ("%DATUMA%") DO (
SET /A DD=%%A
SET /A MM=%%B )
SET /A DATUMB=%DD%/7+%MM%*4
CLS
ECHO %DATUMB%
PAUSE
Mit freundlichen Grüssen
Blueberry
Ich muss eine Batchdatei schreiben, die die Kalenderwoche ausgibt. Ich habe schon den grössten Teil herausgefunden wie ihr unten sehen könnt.
Aber es ist noch nicht ganz richtig, wie muss ich das Jahr noch einbeziehen, damit ich die richtige Wochenzahl bekomme?
Ich danke jetzt schon mal für eure Antworten.
@echo OFF
SET /P DATUMA=Geben Sie das Datum ein (DD:MM:JJJJ):
SET RECHNUNG=%DATE:~0,2%.%DATE:~3,2%.%DATE:~6,0%
FOR /F "TOKENS=1,2 DELIMS=. " %%A IN ("%DATUMA%") DO (
SET /A DD=%%A
SET /A MM=%%B )
SET /A DATUMB=%DD%/7+%MM%*4
CLS
ECHO %DATUMB%
PAUSE
Mit freundlichen Grüssen
Blueberry
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 98330
Url: https://administrator.de/forum/kalenderwoche-ausrechnen-98330.html
Ausgedruckt am: 07.04.2025 um 16:04 Uhr
26 Kommentare
Neuester Kommentar
Hallo Sandro,
Wenn du wirklich mußt und ohne zusätzliche Hilfe eines anderen Programms dann viel Vergnügen.
Da gleich das Wochenende beginnt, mein Tipp:
Nimm date aus dem Paket unxutils und baue das in deine Lösung ein.
Am Prompt:
ergibt für heute eine 39
cu paulepank
Ich muss eine Batchdatei schreiben
als Informatiker hast du doch ganz andere Möglichkeiten.Wenn du wirklich mußt und ohne zusätzliche Hilfe eines anderen Programms dann viel Vergnügen.
Da gleich das Wochenende beginnt, mein Tipp:
Nimm date aus dem Paket unxutils und baue das in deine Lösung ein.
Am Prompt:
.\date +%W
cu paulepank
Moin blueberry,
unterschätz den Berechungsaufwand für die Kalenderwoche nicht.
Du brauchst, egal welchen der 27000 möglichen Algorithmen Du verwendest, IMHO immer die Information "Welcher Wochentag war/ist am 1.Januar des fraglichen Jahres"?
Gute Nachricht I: Das kannst Du per Batch ermitteln (es existieren Beispiele dafür)
Gute Nachricht II
Wenn Du erstmal den Wochentag hast, dann ist der Rest einfach.
Zitat aus der Anleitung, die unter "Anleitungen zum Thema" weiter unten steht:
Siehe hier
Wenn Du einschränkst, dass Du die KW nur berechnen können willst für die Jahre 2000 bis 2019, dann kannst Du natürlich diese Information Wochentag(skorrektur) im Jahr X in Deinem Batch verwalten.
Grüße
Biber
unterschätz den Berechungsaufwand für die Kalenderwoche nicht.
Du brauchst, egal welchen der 27000 möglichen Algorithmen Du verwendest, IMHO immer die Information "Welcher Wochentag war/ist am 1.Januar des fraglichen Jahres"?
Gute Nachricht I: Das kannst Du per Batch ermitteln (es existieren Beispiele dafür)
Gute Nachricht II
Wenn Du erstmal den Wochentag hast, dann ist der Rest einfach.
Zitat aus der Anleitung, die unter "Anleitungen zum Thema" weiter unten steht:
Die skizzierte Mimik mit puren CMD-Befehlen ist wie folgt:
.. Datum ermitteln aus %date%
.. Datum entsprechend dem vorgefundenen aufdröseln in Tag, Monat, Jahr, Wochentag
.. Zwischenberechnung des TagDesJahres (abgespeckte Variante hatte ich mal skizziert unter
Laufender Tag im Jahr und Zähler
.. KW berechnen als SET /A KW = %TachDesJahres% - %Wochentach% + 7 ( wenn Wochentach von 0=Mo bis 7=So gesetzt ist)
.. SET /A KW /= 7 ... fertig
.. Datum ermitteln aus %date%
.. Datum entsprechend dem vorgefundenen aufdröseln in Tag, Monat, Jahr, Wochentag
.. Zwischenberechnung des TagDesJahres (abgespeckte Variante hatte ich mal skizziert unter
Laufender Tag im Jahr und Zähler
.. KW berechnen als SET /A KW = %TachDesJahres% - %Wochentach% + 7 ( wenn Wochentach von 0=Mo bis 7=So gesetzt ist)
.. SET /A KW /= 7 ... fertig
Siehe hier
Wenn Du einschränkst, dass Du die KW nur berechnen können willst für die Jahre 2000 bis 2019, dann kannst Du natürlich diese Information Wochentag(skorrektur) im Jahr X in Deinem Batch verwalten.
Grüße
Biber
Hallo Sandro,
unter Sinnvoll verstehe ich etwas anderes.
Wenn ein fertiges Programm "date" vorhanden ist, sollte man das auch nehmen.
Die gewonnene Zeit kann man für die Ausbildung nutzen. Ich rede hier von Effizienz.
Aber gut, du kennst jetzt eine einfache Lösung und Batch ist nicht für alles eine Lösung.
Viel Spaß beim weiterknobeln.
cu paulepank
unter Sinnvoll verstehe ich etwas anderes.
Wenn ein fertiges Programm "date" vorhanden ist, sollte man das auch nehmen.
Die gewonnene Zeit kann man für die Ausbildung nutzen. Ich rede hier von Effizienz.
Aber gut, du kennst jetzt eine einfache Lösung und Batch ist nicht für alles eine Lösung.
Viel Spaß beim weiterknobeln.
cu paulepank
Moin blueberry,
mit "Wochentag" bzw "Wochentagskorrektur" meinte ich nur:
Wenn heute der 280ste Tag des Jahres wäre, dann wäre formal die Unterstellung richtig, das es sich um Kalenderwoche 40 handelt ( 280 / 7 = 40).
Aber ob der 280ste Tag der 39sten, 40sten oder 41sten KW zugeordnet wird hängt eben vom Wochentag ab.
Bzw. davon, an welchem Tag die 1. KW des Jahres begann.
(und eigentlich auch, ob die Kalenderwochen im betreffenden Land von Sonntag bis Samstag oder von Montag bis Sonntag gemeint sind).
Diesen Wochentagswert musst Du in der Formel berücksichtigen - siehe oben.
Grüße
Biber
mit "Wochentag" bzw "Wochentagskorrektur" meinte ich nur:
Wenn heute der 280ste Tag des Jahres wäre, dann wäre formal die Unterstellung richtig, das es sich um Kalenderwoche 40 handelt ( 280 / 7 = 40).
Aber ob der 280ste Tag der 39sten, 40sten oder 41sten KW zugeordnet wird hängt eben vom Wochentag ab.
Bzw. davon, an welchem Tag die 1. KW des Jahres begann.
(und eigentlich auch, ob die Kalenderwochen im betreffenden Land von Sonntag bis Samstag oder von Montag bis Sonntag gemeint sind).
Diesen Wochentagswert musst Du in der Formel berücksichtigen - siehe oben.
Grüße
Biber
Hallo Sandro,
du wolltest Feedback.
Wofür steht DD in deiner DD.MM.JJJJ ?
Der 01.01.2008 ist bei dir KW 1 -> richtig KW 1
Der 07.01.2008 ist bei dir KW 1 -> richtig KW 2
Der 29.02.2008 ist bei dir KW 8 -> richtig KW 9
usw.
Neustart der Batch
Der 07.01.2008 ist bei dir KW 0 -> richtig KW 2
Der 14.01.2008 ist bei dir KW 2 -> richtig KW 3
Viel Spaß beim weiterknobeln
cu paulepank
du wolltest Feedback.
Wofür steht DD in deiner DD.MM.JJJJ ?
ich habe vertrauen in mein Programm.
Vertrauen ist gut, Kontrolle ist bessser.Der 01.01.2008 ist bei dir KW 1 -> richtig KW 1
Der 07.01.2008 ist bei dir KW 1 -> richtig KW 2
Der 29.02.2008 ist bei dir KW 8 -> richtig KW 9
usw.
Neustart der Batch
Der 07.01.2008 ist bei dir KW 0 -> richtig KW 2
Der 14.01.2008 ist bei dir KW 2 -> richtig KW 3
Viel Spaß beim weiterknobeln
cu paulepank
Hallo,
deine letzten Bemerkungen stehen im krassen Widerspruch zu Zitat:
ich habe dir den Tipp gegeben, die Art des Testens zu überdenken.
- Starte dein Script (ich gehe davon aus, daß es der gleiche Code ist wie hier veröffentlicht)
- gib den 08:01:2008 ein.
- dann kommt die Fehlermeldung: "6" ist syntaktisch an dieser Stelle nicht verarbeitbar.
- Sofern das bei dir nicht der Fall ist, sind die Testbedingungen verschieden oder der hier veröffentlichte Code weicht ab
- entferne @echo off und sieh dir die Fehlerausgabe an.(%LEAPYEAR%)
- generelles Problem: Zufallsbelegung von Variablen (siehe Post vom 7.10)
da du mich immer wieder persönlich angesprochen hast, habe ich überhaupt noch auf deine Artikel reagiert. Aber das hätten wir ja jetzt geklärt.
im Ton hast du dich allemal vergriffen
cu paulepank
deine letzten Bemerkungen stehen im krassen Widerspruch zu Zitat:
da ich Feedbacks (Positive UND Negative) sehr gut finde.
ich habe dir den Tipp gegeben, die Art des Testens zu überdenken.
- Starte dein Script (ich gehe davon aus, daß es der gleiche Code ist wie hier veröffentlicht)
- gib den 08:01:2008 ein.
- dann kommt die Fehlermeldung: "6" ist syntaktisch an dieser Stelle nicht verarbeitbar.
- Sofern das bei dir nicht der Fall ist, sind die Testbedingungen verschieden oder der hier veröffentlichte Code weicht ab
- entferne @echo off und sieh dir die Fehlerausgabe an.(%LEAPYEAR%)
- generelles Problem: Zufallsbelegung von Variablen (siehe Post vom 7.10)
dann geh doch einfach und lass mich in ruhe Klar
da du mich immer wieder persönlich angesprochen hast, habe ich überhaupt noch auf deine Artikel reagiert. Aber das hätten wir ja jetzt geklärt.
im Ton hast du dich allemal vergriffen
cu paulepank