trixy19

Datum ab Startdatum um einen Tag erhöhen

Hallöchen,

ich habe ein kleines Problem was mich langsam verzweifeln lässt.
Ich möchte ab einem Startdatum in der Form PDATUM=20080201 Batch
ein Probramm laufen lassen und nach dem durchlauf den Tag um einen Tag erhöhen.
Bei Tag 31 soll sich der Monat erhöhen und bei Monat 12 auch das Jahr.

Das Programm was abläuft bearbeitet Dateien die z.B. so abgespeichert sind: C:\FOTO\20080201\

Hat jemand eine Idee, wie ich das automatisieren kann?

Wenn ich das mit Schleifen probiere, verschwinden die führenden Nullen, wenn ich die Variable hochzähle und da hört es bei mir irgendwie auf...

Danke und viele Grüße von Bea.
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 91165

Url: https://administrator.de/forum/datum-ab-startdatum-um-einen-tag-erhoehen-91165.html

Ausgedruckt am: 21.05.2025 um 01:05 Uhr

Biber
Biber 02.07.2008 um 18:22:04 Uhr
Goto Top
Moin trixy19,

willkommen im Forum.
Hier gibt es auch einige ältere und langsamere User... so wie mich zum Beispiel- denen Du bitte noch mal langsam erklären/bestätigen musst:

  • dieses Startdatum ist eine jeweils von Dir manuell festgelegte Variable ?
  • oder eine aus einem Datei/Ordner-Erstellungsdatum abzuleitende?
  • oder was genau passiert bei "einem Durchlauf"? Soll einfach nur nach dem Durchlauf eine Ausgabe erscheinen "Startdatum 20080201 - neues Datum 20080202"? Oder werden Dateien damit umbenannt oder in Ordner wegsortiert...?

Grüße
Biber
bastla
bastla 02.07.2008 um 18:39:03 Uhr
Goto Top
Hallo trixy19 und willkommen auch von mir!

Unabhängig davon, wo und wie Du das neue Datum einzusetzen gedenkst, würde es sich etwa so ermitteln lassen:
@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%  
::
:: Was halt so zu tun ist ...
::
set "PDATUM=20080101"  
::
:: Neues Datum ermitteln
::
for /f %%i in ('cscript //nologo %M% %PDATUM%') do set "PDATUM=%%i"  
echo Datum jetzt: %PDATUM%
::
Durch Verwendung der Zeile 11 erhältst Du jeweils das Datum des nächsten Tages. Wie Du es dann verwenden kannst, wäre noch aufgrund Deiner Antworten zu Bibers Fragen zu klären.

Grüße
bastla
trixy19
trixy19 02.07.2008 um 18:41:32 Uhr
Goto Top
Hallo Biber,

also das Startdatum ist von mir festgelegt bzw. von den Dateiordnern die gespeichert wurden.
Das fängt irgendwann 2006 an mit den Ordnern und es ist fast täglich ein Ordner erstellt.

Mein Wegsortier Programm funktioniert schon gut, das würde ich für aktuelle Daten mit:

FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set FOLDERDATE=%%c%%b%%a

machen wollen.
Allerdings müsste ich mit der Lösung für jeden alten Ordner das Systemdatum umstellen und das Programm von Hand starten.
Das würde ich gerne vermeiden.

Ich dachte mir ich kann diesen Ordnernamen aus drei Variablen JJ,MM,TT zusammenbauen. So war zumindest mein Plan.

Bei einem Durchlauf werden die Dateien erst an einen anderen Ort kopiert und dann umbenannt (also wegsortiert)
trixy19
trixy19 02.07.2008 um 19:16:38 Uhr
Goto Top
Hallo bastla,

ich vemute das ist die Lösung. Ich werde das gleich mal in mein Programm einbauen.

Vielen Dank erstmal face-smile
trixy19
trixy19 03.07.2008 um 15:41:58 Uhr
Goto Top
Hallo bastla,

also soweit ich das jetzt sehen kann funktioniert Deine Lösung spitze. Danke erstmal face-smile
Ich bekomme allerdings eine Fehlermeldung: maximale rekursionstiefe für setlocal erreicht.
Mit enabledelayedexpansion läuft das programm jetzt zwar durch, aber ich konnte nicht´s finden was
mir diese Meldung erklärt.

Hast Du eine Idee oder kennst Du den Hintergrund der Meldung?

lg bea
bastla
bastla 03.07.2008 um 17:50:22 Uhr
Goto Top
Hallo trixy19!

Es ist zwar spannender, zu raten, ob Du zB in statt vor einer Schleife ein "setlocal" (ohne zugehöriges "endlocal") verwendest, aber einfacher wäre es, wenn Du den Batch posten könntest (vorzugsweise zwischen < code>-Tags).

Grüße
bastla