killgnom
Goto Top

For-Schleife mit Modulo-Problem

Bin seit einiger Zeit am ausprobieren der Möglichkeiten von Batch und das Forum ist ja wohl das 'nonplusultra' auf dem Gebiet, weswegen ich mich auch grad mal registriert habe.

@echo off
set gesammttage=
set /a jahrheute=%date:~6,4%
set /a jahrheute=jahrheute-1
set jahrdamals=2006

for /L %%J IN (%jahrdamals%, 1, %jahrheute%) DO (
	if  %%J%%4 == 0 (
		set /a gesammttage=gesammttage+366
	) else (
		set /a gesammttage=gesammttage+365
	)
)
echo %gesammttage%
pause

Selbst wenn '%%J=2008' ist und beim ausführen '2008%4 == 0' anzeigt wird, wird trotzdem der 'else'-Befehl ausgeführt.
Wo liegt da das Problem?

Content-Key: 127612

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

Ausgedruckt am: 28.03.2024 um 12:03 Uhr

Mitglied: bastla
bastla 21.10.2009 um 13:19:12 Uhr
Goto Top
Hallo Killgnom und willkommen im Forum!

Für die Modulo-Berechnung benötigst Du ein "set /a", und damit das ohne "delayedExpansion" umzusetzen ist, könntest Du es so versuchen:
@echo off & setlocal
set gesamttage=
set /a jahrheute=%date:~6,4%
set /a jahrheute-=1
set jahrdamals=2006

for /L %%J IN (%jahrdamals%, 1, %jahrheute%) DO (
    set /a gesamttage+=365
    for /f %%a in ('set /a %%J%%4') do if %%a==0 set /a gesamttage+=1  
    )
)
echo %gesamttage%
pause
Grüße
bastla
Mitglied: Killgnom
Killgnom 21.10.2009 um 14:04:28 Uhr
Goto Top
Danke für die schnelle Antwort, funktioniert so wie es soll. Klammer in Zeile 10 ist aber überflüssig ;)
Killgnom