Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Kalenderwoche ausrechnen

Frage Entwicklung Batch & Shell

Mitglied: Blueberry

Blueberry (Level 1) - Jetzt verbinden

02.10.2008, aktualisiert 18.10.2012, 8390 Aufrufe, 26 Kommentare

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
Mitglied: paulepank
02.10.2008 um 14:43 Uhr
Hallo Sandro,

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:
01.
.\date +%W
ergibt für heute eine 39

cu paulepank
Bitte warten ..
Mitglied: Blueberry
02.10.2008 um 15:03 Uhr
Hallo Paulepank,

Erst mal Danke viel mal für den Tipp.
Ich bin 16 (14.10 werde ich 17 JUHU ) und bin im ersten Lehrjahr als Informatiker.
Da mein Lehrmeister sehr begeistert von Batch-Dateien ist und ich dazu noch nicht viel Ahnung davon habe, hat er mir Batch-Aufgaben gegeben.
Und ich habe die Lösung schon fast... Ich stell die mal rauf, wenn ich sie fertig habe (geht ca. 30 bis 60 min, denke ich mal so, aus dem Bauch heraus
). Ich hoffe du schaust dir meine Lösung an und kannst mir ein Feedback geben, da ich Feedbacks (Positive UND Negative) sehr gut finde.

Gruss

Sandro
Bitte warten ..
Mitglied: Biber
02.10.2008, aktualisiert 18.10.2012
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:
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

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
Bitte warten ..
Mitglied: Blueberry
02.10.2008 um 17:03 Uhr
Nimm date aus dem Paket unxutils und baue das in deine
Lösung ein.
Am Prompt:
01.
.\date +%W
ergibt für heute eine 39

cu paulepank

Ich darf keine Zusatzprogramme brauchen... und heute gäb das ne 40 ;) Ist so im Outlook aufgeführt (hoffentlich ist das ein Fehler im Outlook, denn dann hätte ich das Programm schon seid ca. 2 oder 2,5h ^^)
Bitte warten ..
Mitglied: paulepank
02.10.2008 um 17:22 Uhr
Hallo Sandro,

stimmt mit der 40. Ich hatte den falschen Parameter.
01.
.\date +%V
Aber da du verdonnert bist, deine Zeit mit dem Erfinden des Fahrrades auszufüllen, hilft dir das wenig weiter.

Dein Lehrer sollte dir sinnvolle Aufgaben stellen.

cu paulepank
Bitte warten ..
Mitglied: Blueberry
02.10.2008 um 18:36 Uhr
Hallo Zusammen,

@Biber,
Was meinst du mit skorrektur ?
Ist das ein Befehl (Info: Ich darf keine Zusatzprogramme verwenden nur die, die Standart mässig dabei sind ).

@paulepank,
Das sind sinvolle Aufgaben, denn schluss endlich gehen diese Programme, die ich schreibe, auf die Firmen Server
. Und herumzu knobbeln mag ich eigtl. auch...
Bitte warten ..
Mitglied: paulepank
02.10.2008 um 19:09 Uhr
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
Bitte warten ..
Mitglied: Blueberry
02.10.2008 um 21:06 Uhr
Hallo Paulepank,

Mein Lehrmeister ist diese Woche in den Ferien... Und ja dann wird die Ausbildung ein bisschen schwerer ;)

Wenn ich die Lösung habe, werde ich diese reinstellen, darum bitte ich, diesen Thread noch nicht zu schliessen oder als gelöst zu bezeichnen.
Danke!

Mit freundlichen Grüssen

Sandro Lampart
Alias Blueberry
Bitte warten ..
Mitglied: Biber
04.10.2008 um 12:18 Uhr
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
Bitte warten ..
Mitglied: Blueberry
07.10.2008 um 13:24 Uhr
Hallo Zusammen,

Ich habe das Programm fertiggestellt und ich hoffe das es funktioniert, ich habe es noch nicht gross getestet... Aber ich habe vertrauen in mein Programm.
So hier ist es (es ist ein grosser erfolg für mich da ich erst seid ein paar Wochen mit Batch arbeite.):


01.
@ECHO OFF 
02.
 
03.
:DATUMEINGEBEN 
04.
REM Erstellen der Variable, um das Datum einzugeben. 
05.
SET /P DATUM=Geben Sie das Datum ein (DD.MM.JJJJ):  
06.
 
07.
REM Auseinander nehmen des Datums in Tage, Monate, Jahre und zuweisen der Variablen. 
08.
FOR /F "TOKENS=1,2,3 DELIMS=:./- " %%A IN ("%DATUM%") DO ( 
09.
SET DD=%%A 
10.
SET MM=%%B 
11.
SET JJ=%%C) 
12.
 
13.
REM Überprüfen, ob es ein Schaltjahr ist.  
14.
SET /A ERGEBNIS=%JJ% %% 4 
15.
SET /A ERGEBNIS100=%JJ% %% 100  
16.
SET /A ERGEBNIS400=%JJ% %% 400 
17.
  
18.
IF %ERGEBNIS400% == 0 (SET ZUSATZ=1) ELSE ( 
19.
IF %ERGEBNIS100% == 0 (SET ZUSATZ=0) ELSE ( 
20.
IF %ERGEBNIS% == 0 (SET ZUSATZ=1) ELSE  (SET ZUSATZ=0)))  
21.
 
22.
REM Wenn Das Jahr unter 2007 liegt muss der Zusatz minus gerechnet werden und das wird hier berechnet. 
23.
IF %JJ% LSS 2007 (SET /A ZUSATZ3=-%ZUSATZ%) ELSE (SET ZUSATZ3=%ZUSATZ%) 
24.
 
25.
REM Hier werden die vergangenen Tag berechnet. 
26.
IF %MM%==01 SET /A VTAGE= 0 
27.
IF %MM%==02 SET /A VTAGE= 31 
28.
IF %MM%==03 SET /A VTAGE= 31 +28 
29.
IF %MM%==04 SET /A VTAGE= 31 +28 +31 
30.
IF %MM%==05 SET /A VTAGE= 31 +28 +31 +30 
31.
IF %MM%==06 SET /A VTAGE= 31 +28 +31 +30 +31 
32.
IF %MM%==07 SET /A VTAGE= 31 +28 +31 +30 +31 +30 
33.
IF %MM%==08 SET /A VTAGE= 31 +28 +31 +30 +31 +30 +31 
34.
IF %MM%==09 SET /A VTAGE= 31 +28 +31 +30 +31 +30 +31 +31 
35.
IF %MM%==10 SET /A VTAGE= 31 +28 +31 +30 +31 +30 +31 +31 +30 
36.
IF %MM%==11 SET /A VTAGE= 31 +28 +31 +30 +31 +30 +31 +31 +30 +31 
37.
IF %MM%==12 SET /A VTAGE= 31 +28 +31 +30 +31 +30 +31 +31 +30 +31 +30 
38.
 
39.
REM Hier wird der Zusatz2 berechnet. 
40.
SET /A ZUSATZ2=%JJ%-2007 
41.
 
42.
REM Der Zusatz2 soll nicht grösser als 6 werden, dieses Problem löse ich hier. 
43.
SET /A ZUSATZ2=%ZUSATZ2% %% 7 
44.
 
45.
REM Weil ich immer vom Jahr 2007 aus rechne, muss ich noch die Schaltjahre einbeziehen, damit die Rechnung richtig ist. 
46.
SET /A ZUSATZ4=(%JJ%-2007)/4 - (%JJ%-2007)/100 + (%JJ%-2007)/400 
47.
 
48.
REM Der Zusatz4 darf nicht grösser werden als 6, das mache ich hier. 
49.
SET /A ZUSATZ4=%ZUSATZ4% %% 7 
50.
 
51.
 
52.
REM Diese Variable ist als Summe von Zusatz2 und Zusatz4 definiert. 
53.
SET /A ZUSATZZ=%ZUSATZ2%+%ZUSATZ4% 
54.
 
55.
REM Der ZUSATZZ darf nicht grösser als 7 oder kleiner als -7 werden.  
56.
SET /A ZUSATZZ=%ZUSATZZ% %% 7 
57.
 
58.
REM Hier wird die Woche berechnet. 
59.
SET /A WOCHENNUMMER=1000+%VTAGE%+%DD%+%ZUSATZ3%+%ZUSATZZ% 
60.
SET /A WOCHENNUMMER2=%WOCHENNUMMER:~1,3% 
61.
SET /A WOCHENNUMMER3=(%WOCHENNUMMER2%+6)/7 
62.
 
63.
REM Hier schaue ich, dass die Kalenderwoche nicht grösser als 52 werden kann 
64.
IF %WOCHENNUMMER3% GTR 52 (SET /A WOCHENNUMMER3=%WOCHENNUMMER3%-52) 
65.
 
66.
CLS 
67.
ECHO Eingegebenes Datum: %DD%.%MM%.%JJ% 
68.
ECHO Die Kalenderwoche dazu ist: %WOCHENNUMMER3% 
69.
PAUSE 
70.
 
71.
CLS 
72.
GOTO :DATUMEINGEBEN
Bitte warten ..
Mitglied: paulepank
07.10.2008 um 16:21 Uhr
Hallo Sandro,

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
Bitte warten ..
Mitglied: Blueberry
08.10.2008 um 13:59 Uhr
Hi paulepank,

Das DD steht für den Tag (d=day) und es hat 2 D damit man weiss wie lang das es minimum und maximum sein darf ...

Ich werde noch eine neue Datei machen und diese etwas anderst aufbauen... Bin von der alten Datei ein wenig verwirrt an manchen stellen ^^

Mit freundlichen Grüssen

Sandro Lampart
Alias Blueberry
Bitte warten ..
Mitglied: paulepank
08.10.2008 um 17:07 Uhr
Hallo Sandro,

wenn DD für Day steht, dann steht JJJJ bestimmt für Year.
Ich hoffe du hast meine Anspielung jetzt verstanden

cu paulepank
Bitte warten ..
Mitglied: Blueberry
16.10.2008 um 10:40 Uhr
Zitat von paulepank:
Hallo Sandro,

wenn DD für Day steht, dann steht JJJJ bestimmt für Year.
Ich hoffe du hast meine Anspielung jetzt verstanden

cu paulepank


Hallo Paulepank,

Wegen der Anspielung... Muss ich noch überlegen bin 16 oh nein schon 17 ( seid 2 Tagen )

Mit freundlichen Grüssen

Blueberry
Bitte warten ..
Mitglied: Blueberry
16.10.2008 um 15:03 Uhr
Hallo Paulepank,

Hier hast du dein Fahrrad und das noch mit ISO-Vorschriften

01.
@ECHO Off & SETLOCAL 
02.
 
03.
:START 
04.
CLS 
05.
::Hier erfolgt die Datumseingabe 
06.
SET /P DATUM=Geben Sie hier das Datum ein (DD:MM:JJJJ): 
07.
 
08.
::Hier wird das Jahr auseinander genommen und Variabeln zugewiesen. 
09.
FOR /F "TOKENS=1,2,3 DELIMS=.:-/_;, " %%A IN ("%DATUM%") DO ( 
10.
SET D=%%A  
11.
SET M=%%B  
12.
SET Y=%%C ) 
13.
 
14.
:: Überprüfen, ob es ein Schaltjahr ist. 
15.
SET /A ERGEBNIS=(%Y%) %% 4 
16.
SET /A ERGEBNIS100=(%Y%) %% 100 
17.
SET /A ERGEBNIS400=(%Y%) %% 400 
18.
 
19.
IF %ERGEBNIS400% == 0 (SET LEAPYEAR= 1) ELSE ( 
20.
IF %ERGEBNIS100% == 0 (SET LEAPYEAR= 0) ELSE ( 
21.
IF %ERGEBNIS% == 0 (SET LEAPYEAR= 1) ELSE  (SET LEAPYEAR= 0))) 
22.
 
23.
:: Überprüft, ob das Vorjahr ein Schaltjahr war. 
24.
SET /A EERGEBNIS=(%Y%-1) %% 4 
25.
SET /A EERGEBNIS100=(%Y%-1) %% 100 
26.
SET /A EERGEBNIS400=(%Y%-1) %% 400 
27.
 
28.
IF %EERGEBNIS400% == 0 (SET LLEAPYEAR= 1) ELSE ( 
29.
IF %EERGEBNIS100% == 0 (SET LLEAPYEAR= 0) ELSE ( 
30.
IF %EERGEBNIS% == 0 (SET LLEAPYEAR= 1) ELSE  (SET LLEAPYEAR= 0))) 
31.
 
32.
::Hier wird berechnet wieviele Tage schon vergangen sind. 
33.
IF %M% == 01 (SET VTAGE=0  ) 
34.
IF %M% == 02 (SET VTAGE=31 ) 
35.
IF %M% == 03 (SET VTAGE=59 ) 
36.
IF %M% == 04 (SET VTAGE=90 ) 
37.
IF %M% == 05 (SET VTAGE=120) 
38.
IF %M% == 06 (SET VTAGE=151) 
39.
IF %M% == 07 (SET VTAGE=181) 
40.
IF %M% == 08 (SET VTAGE=212) 
41.
IF %M% == 09 (SET VTAGE=243) 
42.
IF %M% == 10 (SET VTAGE=273) 
43.
IF %M% == 11 (SET VTAGE=304) 
44.
IF %M% == 12 (SET VTAGE=334) 
45.
 
46.
 
47.
:: Erstellen der DAYOFYEARNUMBER. 
48.
SET /A DAYOFYEARNUMBER= %D% + %VTAGE% 
49.
 
50.
IF %M% GTR 2 SET /A DAYOFYEARNUMBER+=%LEAPYEAR% 
51.
 
52.
::Wochen tag vom 01 Januar. 
53.
SET /A YY=(%Y%-1) %% 100 
54.
SET /A C=(%Y%-1) - %YY% 
55.
SET /A G=%YY% + %YY%/4 
56.
SET /A JAN1WEEKDAY= 1 +(((((%C% / 100) %% 4)* 5) + %G%) %% 7) 
57.
 
58.
:: Der Wochentag des eingegebenen Datums herausfinden. 
59.
SET /A H= %DAYOFYEARNUMBER% + %JAN1WEEKDAY% -1 
60.
SET /A WEEKDAY= 1 + ((%H%-1) %%7) 
61.
 
62.
::Falls das Datum auf YEARNUMBER Y-1 fällt, ob es Woche 52 oder 53 ist. 
63.
SET /A DIFFL3=8-%JAN1WEEKDAY% 
64.
IF %DAYOFYEARNUMBER% LEQ %DIFFL3% (SET VAR1=1) ELSE (SET VAR1=0) 
65.
IF %JAN1WEEKDAY% GTR 4 (SET VAR2=1) ELSE (SET VAR2=0) 
66.
SET /A VAR3=%VAR1%+%VAR2% 
67.
 
68.
IF %VAR3% GTR 1 (CALL :SUB1) ELSE (SET YEARNUMBER=%Y%) 
69.
 
70.
::Falls das DAtum auf YEARNUMBER Y+1 fällt, ob es Wochenummer 1 ist. 
71.
IF %YEARNUMBER%==%Y% CALL :SUB3 
72.
 
73.
::Wenn das eingegebene Datum auf das YEARNUMBER Y fällt, wird die Woche 1 zu Woche 53. 
74.
IF %YEARNUMBER%==%Y% CALL :SUB4 
75.
 
76.
::Hier ist die Ausgabe. 
77.
IF %WEEKNUMBER% LSS 10 (SET WEEKNUMBER=%WEEKNUMBER%) 
78.
ECHO %WEEKNUMBER% 
79.
PAUSE 
80.
GOTO START 
81.
 
82.
 
83.
:SUB1 
84.
SET /A YEARNUMBER=%Y%-1  
85.
IF %JAN1WEEKDAY%==5 (GOTO SET53) ELSE (SET VAR5=0) 
86.
 
87.
IF %JAN1WEEKDAY%==6 (SET VAR6=1) ELSE (SET VAR6=0) 
88.
SET /A VAR7=%LLEAPYEAR%+%VAR6% 
89.
IF %VAR7% GTR 1 (GOTO SET53) ELSE (SET WEEKNUMBER=52) 
90.
GOTO :EOF 
91.
 
92.
:SET53 
93.
SET WEEKNUMBER=53 
94.
GOTO :EOF 
95.
 
96.
:SUB2 
97.
IF %LLEAPYEAR% == 1 (SET /A SCHALTJAHR= -1) ELSE (SET /A SCHALTJAHR= +1) 
98.
GOTO :EOF 
99.
 
100.
:SUB3 
101.
SET /A I=%LEAPYEAR%+365 
102.
SET /A DIFFL=%I%-%DAYOFYEARNUMBER% 
103.
SET /A DIFFL2=4-%WEEKDAY% 
104.
 
105.
IF %DIFFL% LSS %DIFFL2% (GOTO SETZU) ELSE (GOTO :EOF) 
106.
 
107.
:SETZU 
108.
SET /A YEARNUMBER= %Y% +1 
109.
SET WEEKNUMBER=1 
110.
GOTO :EOF 
111.
 
112.
:SUB4 
113.
SET /A J= %DAYOFYEARNUMBER% + 7 - %WEEKDAY% + %JAN1WEEKDAY% -1 
114.
SET /A WEEKNUMBER=%J%/7 
115.
IF %JAN1WEEKDAY% GTR 4 (SET /A WEEKNUMBER-= 1) 
116.
GOTO :EOF
Probiert es aus
Ich habe es beretis erfolgreich getestet...
Ich möchte mich noch bei allen bedanken, die mir dabei geholfen haben und wenn ich wieder einmal so ne Aufgabe habe, bin ich schnell wieder da .


Mit freundlichen Grüssen und ich wünsche euch diese Aufgabe nicht!
Blueberry
Bitte warten ..
Mitglied: paulepank
16.10.2008 um 16:01 Uhr
Hallo,

Ich habe es beretis erfolgreich getestet...

wie man testet, solltest du in deine "Batcherei" mit einbeziehen.
Gib den 08.01.2008 ein und du hast noch ein langes Wochenende vor dir.

Ach ja, bevor du 20 wirst:

Entweder TT.MM.JJJJ oder DD.MM.YYYY

cu paulepank
Bitte warten ..
Mitglied: Blueberry
17.10.2008 um 08:29 Uhr
Hallo Paulepanke,

Ich bin schon wieder dran -.-
Bitte warten ..
Mitglied: Blueberry
17.10.2008 um 08:57 Uhr
Hallo Paulepank,

Ich hoffe, dass mein Wochenende nicht so kurz wird, wie die Zeit die ich aufwenden musste, um das mit dem 08:01:2008 zu debugen
Das Problem war das es oktale Werte waren, und im oktalen Zahlenstrahl gibt es kein 08 oder 09 Das gleiche hab ich gleich mit den Monaten gemacht.

01.
@ECHO OFF 
02.
 
03.
:START 
04.
CLS 
05.
SET /P DATUM=Geben Sie hier das Datum ein (TT:MM:JJJJ): 
06.
 
07.
FOR /F "TOKENS=1,2,3 DELIMS=.:-/_;, " %%A IN ("%DATUM%") DO ( 
08.
SET D=%%A  
09.
SET M=%%B  
10.
SET Y=%%C ) 
11.
 
12.
IF %D% LSS 10 (SET /A D=%D:~1,1%) 
13.
IF %M% LSS 10 (SET /A M=%M:~1,1%) 
14.
 
15.
SET /A ERGEBNIS=(%Y%) %% 4 
16.
SET /A ERGEBNIS100=(%Y%) %% 100 
17.
SET /A ERGEBNIS400=(%Y%) %% 400 
18.
 
19.
IF %ERGEBNIS400% == 0 (SET LEAPYEAR= 1) ELSE ( 
20.
IF %ERGEBNIS100% == 0 (SET LEAPYEAR= 0) ELSE ( 
21.
IF %ERGEBNIS% == 0 (SET LEAPYEAR= 1) ELSE  (SET LEAPYEAR= 0))) 
22.
 
23.
SET /A EERGEBNIS=(%Y%-1) %% 4 
24.
SET /A EERGEBNIS100=(%Y%-1) %% 100 
25.
SET /A EERGEBNIS400=(%Y%-1) %% 400 
26.
 
27.
IF %EERGEBNIS400% == 0 (SET LLEAPYEAR= 1) ELSE ( 
28.
IF %EERGEBNIS100% == 0 (SET LLEAPYEAR= 0) ELSE ( 
29.
IF %EERGEBNIS% == 0 (SET LLEAPYEAR= 1) ELSE  (SET LLEAPYEAR= 0))) 
30.
 
31.
IF %M% == 01 (SET VTAGE=0  ) 
32.
IF %M% == 02 (SET VTAGE=31 ) 
33.
IF %M% == 03 (SET VTAGE=59 ) 
34.
IF %M% == 04 (SET VTAGE=90 ) 
35.
IF %M% == 05 (SET VTAGE=120) 
36.
IF %M% == 06 (SET VTAGE=151) 
37.
IF %M% == 07 (SET VTAGE=181) 
38.
IF %M% == 08 (SET VTAGE=212) 
39.
IF %M% == 09 (SET VTAGE=243) 
40.
IF %M% == 10 (SET VTAGE=273) 
41.
IF %M% == 11 (SET VTAGE=304) 
42.
IF %M% == 12 (SET VTAGE=334) 
43.
 
44.
SET /A DAYOFYEARNUMBER= %D% + %VTAGE% 
45.
 
46.
IF %M% GTR 2 (SET /A DAYOFYEARNUMBER=%DAYOFYEARNUMBER%+%LEAPYEAR%) 
47.
 
48.
SET /A YY=(%Y%-1) %% 100 
49.
SET /A C=(%Y%-1) - %YY% 
50.
SET /A G=%YY% + %YY%/4 
51.
SET /A JAN1WEEKDAY= 1 +(((((%C% / 100) %% 4)* 5) + %G%) %% 7) 
52.
 
53.
SET /A H= %DAYOFYEARNUMBER% + %JAN1WEEKDAY% -1 
54.
SET /A WEEKDAY= 1 + ((%H%-1) %%7) 
55.
 
56.
SET /A DIFFL3=8-%JAN1WEEKDAY% 
57.
IF %DAYOFYEARNUMBER% LEQ %DIFFL3% (SET VAR1=1) ELSE (SET VAR1=0) 
58.
IF %JAN1WEEKDAY% GTR 4 (SET VAR2=1) ELSE (SET VAR2=0) 
59.
SET /A VAR3=%VAR1%+%VAR2% 
60.
 
61.
IF %VAR3% GTR 1 (CALL :SUB1) ELSE (SET YEARNUMBER=%Y%) 
62.
 
63.
IF %YEARNUMBER%==%Y% CALL :SUB3 
64.
 
65.
IF %YEARNUMBER%==%Y% CALL :SUB4 
66.
 
67.
CLS 
68.
IF %WEEKNUMBER% LSS 10 (SET WEEKNUMBER=%WEEKNUMBER%) 
69.
ECHO Woche %WEEKNUMBER% 
70.
PAUSE 
71.
GOTO START 
72.
 
73.
 
74.
:SUB1 
75.
SET /A YEARNUMBER=%Y%-1  
76.
IF %JAN1WEEKDAY%==5 (GOTO SET53) ELSE (SET VAR5=0) 
77.
 
78.
IF %JAN1WEEKDAY%==6 (SET VAR6=1) ELSE (SET VAR6=0) 
79.
SET /A VAR7=%LLEAPYEAR%+%VAR6% 
80.
IF %VAR7% GTR 1 (GOTO SET53) ELSE (SET WEEKNUMBER=52) 
81.
GOTO :EOF 
82.
 
83.
:SET53 
84.
SET WEEKNUMBER=53 
85.
GOTO :EOF 
86.
 
87.
:SUB2 
88.
IF %LLEAPYEAR% == 1 (SET /A SCHALTJAHR= -1) ELSE (SET /A SCHALTJAHR= +1) 
89.
GOTO :EOF 
90.
 
91.
:SUB3 
92.
SET /A I=%LEAPYEAR%+365 
93.
SET /A DIFFL=%I%-%DAYOFYEARNUMBER% 
94.
SET /A DIFFL2=4-%WEEKDAY% 
95.
 
96.
IF %DIFFL% LSS %DIFFL2% (GOTO SETZU) ELSE (GOTO :EOF) 
97.
 
98.
:SETZU 
99.
SET /A YEARNUMBER= %Y% +1 
100.
SET WEEKNUMBER=1 
101.
GOTO :EOF 
102.
 
103.
:SUB4 
104.
SET /A J= %DAYOFYEARNUMBER% + 7 - %WEEKDAY% + %JAN1WEEKDAY% -1 
105.
SET /A WEEKNUMBER=%J%/7 
106.
IF %JAN1WEEKDAY% GTR 4 (SET /A WEEKNUMBER-= 1) 
107.
GOTO :EOF
Mit freundlichen Grüssen
Blueberry
Bitte warten ..
Mitglied: Blueberry
17.10.2008 um 09:46 Uhr
OMG -.- Da hatte ich ja noch gar nixx!
Ignoriert bitte den Teil ganz oben...
Das richtige Programm ist gleich oben an diesem Kommentar.

Mit freundlichen Grüssen

Blueberry
Bitte warten ..
Mitglied: paulepank
17.10.2008 um 10:54 Uhr
Hallo,

und wann wirst du dein Script mal selbst testen, um zu merken, das z.B. der 08:01:2008 immer noch buggy ist ?

so langsam wird es nervig.

cu paulepank
Bitte warten ..
Mitglied: Blueberry
17.10.2008 um 11:04 Uhr
Bei mir hat es funktioniert... Und noch was:
Entweder gibst du mir einen Tipp oder lässt es einfach sein. Dein rum Geheule, will und kann ich einfach nicht brauchen, wenn es nervt, dann geh doch einfach und lass mich in ruhe Klar ?

Und wenn du nur ein bisschen über deine Nase hinaus überlegt hättest, dann hättest du auch gemerkt das ich das falsche Script heraufgeladen habe.

Einfach die Nullen vor den Zahlen weg nehmen, ausser beim Oktober also bei der 10 da stehen lassen, sonst gibt es einen Bug. Ich hoffe ich habe nixx vergessen so das du auch ja nicht überlegen musst. Und sonst einfach ne PN oder wieder hier reinschreiben (bitte aber ohne geheul).
IF %M% == 1 (SET VTAGE=0 )
IF %M% == 2 (SET VTAGE=31 )
IF %M% == 3 (SET VTAGE=59 )
IF %M% == 4 (SET VTAGE=90 )
IF %M% == 5 (SET VTAGE=120)
IF %M% == 6 (SET VTAGE=151)
IF %M% == 7 (SET VTAGE=181)
IF %M% == 8 (SET VTAGE=212)
IF %M% == 9 (SET VTAGE=243)
IF %M% == 10 (SET VTAGE=273)
IF %M% == 11 (SET VTAGE=304)
IF %M% == 12 (SET VTAGE=334)

Dann funktioniert das Programm auch.

MfG
Bitte warten ..
Mitglied: Blueberry
17.10.2008 um 12:07 Uhr
Zitat von paulepank:
Hallo,

und wann wirst du dein Script mal selbst testen, um zu merken, das
z.B. der 08:01:2008 immer noch buggy ist ?

Ich hab mein Script getestet...
Bitte warten ..
Mitglied: paulepank
17.10.2008 um 12:08 Uhr
Hallo,

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
Bitte warten ..
Mitglied: Blueberry
17.10.2008 um 12:11 Uhr
Ja aber das rum geheule kann ich nicht brauchen. Dann sag mir ich soll mein Script besser testen, aber nicht so rum Jammern das geht mir voll aufen Sack.
Bitte warten ..
Mitglied: Blueberry
17.10.2008 um 12:15 Uhr
im Ton hast du dich allemal vergriffen

Was findest du den falsch an meinem Ton?
Wie soll ich es den schreiben, dass es nicht mit einem Falschen Ton rüber kommt?
Ich bin ein Schweizer, hier ist rum heulen nicht böse gemeint oder falscher Ton oder so, sondern eine Art, wie man etwas rüberbringt. Und wenn du schreibst das es dich nervt, kommt das bei mir rüber als MUSST du das machen. Ich habe mich hier nicht im Ton vergriffen... Du wirst es spürbar merken wenn ich mich im Ton vergreiffe was aber nicht passieren wird, insofern du mich nicht beleidigst oder so. Und ich denke das wir alt genug sind und einander nicht beleidigen müssen oder ???

MfG
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Kalenderwoche in Powershell - wechselt Donnerstags - dieses Jahr (2)

Frage von SamTrex zum Thema Batch & Shell ...

Netzwerke
gelöst Subnetzmaske 255.255.192.0 mit Sufix 18 ausrechnen? (5)

Frage von arik12 zum Thema Netzwerke ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...