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?
Please also mark the comments that contributed to the solution of the article
Content-Key: 94064
Url: https://administrator.de/contentid/94064
Printed on: April 19, 2024 at 19:04 o'clock
7 Comments
Latest comment
@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]