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
GELÖST

Morgiges Datum in Batchdatei bestimmen

Frage Entwicklung Batch & Shell

Mitglied: bufferm44

bufferm44 (Level 1) - Jetzt verbinden

10.08.2008, aktualisiert 18.10.2012, 5275 Aufrufe, 7 Kommentare

Hallo zusammen!

Ich bestimme mit folgenden Zeilen das aktuelle Datum:

01.
  
02.
set jahr=%date:~-4% 
03.
set monat=%date:~-7,2% 
04.
set tag=%date:~-10,2% 
05.
set wotag=%date:~-13,2% 
06.
 
07.
echo Heute ist %wotag%, der %tag%.%monat%.%jahr% 
08.
 


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?
Mitglied: SarekHL
10.08.2008 um 21:04 Uhr
Muß es Batch sein? in VB ist das absolut easy ...
Bitte warten ..
Mitglied: bastla
10.08.2008, aktualisiert 18.10.2012
@SarekHL
Dass sich VB(S) besser als Batch dafür eignet, sehe ich genauso; deshalb habe ich hier und 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
Bitte warten ..
Mitglied: SarekHL
10.08.2008 um 21:16 Uhr
Ja, in VB nehme ich einfach den DateAdd-Befehl. Ist ein glatter Einzeiler ;)
Bitte warten ..
Mitglied: bufferm44
11.08.2008 um 12:16 Uhr
Hi!

Ja, es ist ein Win2000prof-Server der das Ganze erledigen soll. Die VB-Geschichte funktioniert nicht, es wird halt der Wert aus

set "PDATUM=20080101"

ausgegeben. Gibt es irgendwo ein VB-Grundlagen-Tutorial? Oder muss ich einfach irgendwas aktivieren?

Aber ich glaube fast dass es wirklich schneller geht wenn ich schnell die letzten Tage/Monate abfrage und dementsprechend Monat/Jahr eins hochsetze und alle 4 Jahre mal manuell beim Februar eingreife ;)

Trotzdem Danke schon mal...
Bitte warten ..
Mitglied: bastla
11.08.2008 um 12:29 Uhr
Hallo bufferm44!

Die angesprochene VB-Geschichte ist ein Batch und könnte (etwas angepasst) so verwendet werden:
01.
@echo off & setlocal 
02.
Set M=%temp%\Morgen.vbs 
03.
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% 
04.
for /f %%i in ('cscript //nologo %M% %date:~-4%%date:~-7,2%%date:~-10,2%') do set "Morgen=%%i" 
05.
echo Morgen: %Morgen%
Grüße
bastla
Bitte warten ..
Mitglied: bufferm44
12.08.2008 um 20:35 Uhr
Hi Bastla, jo das funktioniert,

hier noch mal die zwischendurch gebaute "hässliche" Variante ;)

Ok, alle 4 Jahre gibts ein Problem aber das mach ich dann manuell *gg

Thx und gelöst...

01.
set jahr=%date:~-2% 
02.
set monat=%date:~-7,2% 
03.
set tag=%date:~-10,2% 
04.
 
05.
set korrektur=false 
06.
 
07.
set tag28=false 
08.
IF not %tag%==28 goto :notag28 
09.
IF %monat%==02 set monat=03& set tag=01& set korrektur=true 
10.
:notag28 
11.
 
12.
set tag30=false 
13.
IF not %tag%==30 goto :notag30 
14.
IF %monat%==04 set monat=05& set tag=01& set korrektur=true 
15.
IF %monat%==06 set monat=06& set tag=01& set korrektur=true 
16.
IF %monat%==09 set monat=10& set tag=01& set korrektur=true 
17.
IF %monat%==11 set monat=12& set tag=01& set korrektur=true 
18.
:notag30 
19.
 
20.
set tag31=false 
21.
IF not %tag%==31 goto :notag31 
22.
IF %monat%==01 set monat=02& set tag=01& set korrektur=true 
23.
IF %monat%==03 set monat=04& set tag=01& set korrektur=true 
24.
IF %monat%==05 set monat=06& set tag=01& set korrektur=true 
25.
IF %monat%==07 set monat=08& set tag=01& set korrektur=true 
26.
IF %monat%==08 set monat=09& set tag=01& set korrektur=true 
27.
IF %monat%==10 set monat=11& set tag=01& set korrektur=true 
28.
IF %monat%==12 set monat=01& set tag=01& set /a jahr+=1& set korrektur=true 
29.
:notag31 
30.
 
31.
IF not "%korrektur%"=="true" set /a tag+=1
Bitte warten ..
Mitglied: bastla
12.08.2008 um 21:21 Uhr
Hallo bufferm44!

Damit das Problem mit den 4 Jahren denn doch nicht eintritt :
01.
set jahr=%date:~-4% 
02.
set monat=%date:~-7,2% 
03.
set tag=%date:~-10,2% 
04.
set /a Schaltjahr=%jahr%%%4 
05.
if %jahr:~-2%==00 set /a Schaltjahr+=%Jahr:~,2%%%4 
06.
 
07.
set korrektur=false 
08.
 
09.
IF %tag%==28 IF %Schaltjahr% neq 0 if %monat%==02 set monat=03& set tag=01& set korrektur=true 
10.
 
11.
IF %tag%==29 IF %monat%==02 set monat=03& set tag=01& set korrektur=true 
12.
 
13.
IF not %tag%==30 goto :notag30 
14.
IF %monat%==04 set monat=05& set tag=01& set korrektur=true 
15.
IF %monat%==06 set monat=06& set tag=01& set korrektur=true 
16.
IF %monat%==09 set monat=10& set tag=01& set korrektur=true 
17.
IF %monat%==11 set monat=12& set tag=01& set korrektur=true 
18.
:notag30 
19.
 
20.
IF not %tag%==31 goto :notag31 
21.
IF %monat%==01 set monat=02& set tag=01& set korrektur=true 
22.
IF %monat%==03 set monat=04& set tag=01& set korrektur=true 
23.
IF %monat%==05 set monat=06& set tag=01& set korrektur=true 
24.
IF %monat%==07 set monat=08& set tag=01& set korrektur=true 
25.
IF %monat%==08 set monat=09& set tag=01& set korrektur=true 
26.
IF %monat%==10 set monat=11& set tag=01& set korrektur=true 
27.
IF %monat%==12 set monat=01& set tag=01& set /a jahr+=1& set korrektur=true 
28.
:notag31 
29.
 
30.
IF "%korrektur%"=="true" goto :fertig 
31.
set /a tag=1%tag%+1 
32.
set "tag=%tag:~-2%" 
33.
 
34.
:fertig
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]
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
gelöst In Html-Datei per Batchdatei das Datum und die Uhrzeit eintragen (2)

Frage von Hakiegold zum Thema Batch & Shell ...

Windows 10
gelöst Windows 10 - Datum und Zeitfehler bei Update (3)

Frage von swisstom zum Thema Windows 10 ...

Windows Userverwaltung
gelöst Datum einer Gruppenmitgliedschaft (1)

Frage von slansky zum Thema Windows Userverwaltung ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

DSL, VDSL
DSL-Signal bewerten (10)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...