Morgiges Datum in Batchdatei bestimmen
Hallo zusammen!
Ich bestimme mit folgenden Zeilen das aktuelle Datum:
Wie aber kann ich das morgige Datum bestimmen? Gut man könnte mit einem Haufen von IFs alle Variablen umändern (prüfen ob der letzte Tag des Monats ist usw..) aber geht das nicht auch eleganter?
Ich bestimme mit folgenden Zeilen das aktuelle Datum:
set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%
set wotag=%date:~-13,2%
echo Heute ist %wotag%, der %tag%.%monat%.%jahr%
Wie aber kann ich das morgige Datum bestimmen? Gut man könnte mit einem Haufen von IFs alle Variablen umändern (prüfen ob der letzte Tag des Monats ist usw..) aber geht das nicht auch eleganter?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 94064
Url: https://administrator.de/contentid/94064
Ausgedruckt am: 21.11.2024 um 22:11 Uhr
7 Kommentare
Neuester Kommentar
@SarekHL
Dass sich VB(S) besser als Batch dafür eignet, sehe ich genauso; deshalb habe ich da schon mal eine Kombination von beidem fabriziert ...
@bufferm44
Für die Wochentagsbestimmung wie in Deiner Zeile 5 benötigst Du aber Windows 2000, oder?
Grüße
bastla
Dass sich VB(S) besser als Batch dafür eignet, sehe ich genauso; deshalb habe ich da schon mal eine Kombination von beidem fabriziert ...
@bufferm44
Für die Wochentagsbestimmung wie in Deiner Zeile 5 benötigst Du aber Windows 2000, oder?
Grüße
bastla
Hallo bufferm44!
Die angesprochene VB-Geschichte ist ein Batch und könnte (etwas angepasst) so verwendet werden:
Grüße
bastla
Die angesprochene VB-Geschichte ist ein Batch und könnte (etwas angepasst) so verwendet werden:
@echo off & setlocal
Set M=%temp%\Morgen.vbs
echo D=WScript.Arguments(0):N=DateAdd("d",1,DateSerial(Left(D,4),Mid(D,5,2),Right(D,2))):WScript.Echo Right(N,4)^&Mid(N,4,2)^&Left(N,2)>%M%
for /f %%i in ('cscript //nologo %M% %date:~-4%%date:~-7,2%%date:~-10,2%') do set "Morgen=%%i"
echo Morgen: %Morgen%
bastla
Hallo bufferm44!
Damit das Problem mit den 4 Jahren denn doch nicht eintritt :
Grüße
bastla
[Edit]
Verwendung der 4-stelligen Jahreszahl (Umwandlung auf 2-stellig ist einfacher als umgekehrt)
Korrektur der Tageberechnung - damit's nicht schon am 8. eines Monats das erste Problem gibt
Berücksichtigung der Schaltjahre über 2096 hinaus - man kann ja nie wissen ...
[/Edit]
Damit das Problem mit den 4 Jahren denn doch nicht eintritt :
set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%
set /a Schaltjahr=%jahr%%%4
if %jahr:~-2%==00 set /a Schaltjahr+=%Jahr:~,2%%%4
set korrektur=false
IF %tag%==28 IF %Schaltjahr% neq 0 if %monat%==02 set monat=03& set tag=01& set korrektur=true
IF %tag%==29 IF %monat%==02 set monat=03& set tag=01& set korrektur=true
IF not %tag%==30 goto :notag30
IF %monat%==04 set monat=05& set tag=01& set korrektur=true
IF %monat%==06 set monat=06& set tag=01& set korrektur=true
IF %monat%==09 set monat=10& set tag=01& set korrektur=true
IF %monat%==11 set monat=12& set tag=01& set korrektur=true
:notag30
IF not %tag%==31 goto :notag31
IF %monat%==01 set monat=02& set tag=01& set korrektur=true
IF %monat%==03 set monat=04& set tag=01& set korrektur=true
IF %monat%==05 set monat=06& set tag=01& set korrektur=true
IF %monat%==07 set monat=08& set tag=01& set korrektur=true
IF %monat%==08 set monat=09& set tag=01& set korrektur=true
IF %monat%==10 set monat=11& set tag=01& set korrektur=true
IF %monat%==12 set monat=01& set tag=01& set /a jahr+=1& set korrektur=true
:notag31
IF "%korrektur%"=="true" goto :fertig
set /a tag=1%tag%+1
set "tag=%tag:~-2%"
:fertig
bastla
[Edit]
Verwendung der 4-stelligen Jahreszahl (Umwandlung auf 2-stellig ist einfacher als umgekehrt)
Korrektur der Tageberechnung - damit's nicht schon am 8. eines Monats das erste Problem gibt
Berücksichtigung der Schaltjahre über 2096 hinaus - man kann ja nie wissen ...
[/Edit]