Batch rechnen mit Datum
Hallo zusammen,
ich habe zwar über die Suche ein paar ähnliche Beiträge gefunden, aber keinen, der mir 100%ig geholfen hat.
Mir stellt sich folgendes Problem:
Ich möchte für monatlich wiederkehrende Auswertungen eine Batch-Datei in Excel Makro einbinden, dass die ausgegebenen Analysen automatisch in Ordner verschiebt.
Diese Ordner müssen neu erstellt werden.
Mein Lösungsansatz war bisher folgender:
Ich habe per Batch einen Ordner erstellen lassen, den ich über das Auslesen der Systemzeit über "%date:~xy%" mit dem Format MMJJJJ benannt habe.
Es handelt sich um monatlich wiederkehrende Auswertungen, die beispielsweise im August erstellt wurden, jedoch unter dem Monat Juli abgelegt werden sollen.
Ich suche nun eine Möglichkeit, das Datum jeweils um einen Monat zurückzurechnen.
Habe mir schon überlegt Variablen for Monat und Jahr zu setzen und diese dann im Dateinamen zusammenzusetzen, nachdem ich den Monat um 1 reduziert habe.
Allerdings habe ich das noch nicht hinbekommen.
Außerdem würde ich mit dieser Methode Probleme beim Jahreswechsel bekommen.
--> 002008
Vielleicht hat ja schon mal jemand Erfahrungen damit gesammelt, oder kann mir weiterhelfen?!
Viele Grüße
Pascal
ich habe zwar über die Suche ein paar ähnliche Beiträge gefunden, aber keinen, der mir 100%ig geholfen hat.
Mir stellt sich folgendes Problem:
Ich möchte für monatlich wiederkehrende Auswertungen eine Batch-Datei in Excel Makro einbinden, dass die ausgegebenen Analysen automatisch in Ordner verschiebt.
Diese Ordner müssen neu erstellt werden.
Mein Lösungsansatz war bisher folgender:
Ich habe per Batch einen Ordner erstellen lassen, den ich über das Auslesen der Systemzeit über "%date:~xy%" mit dem Format MMJJJJ benannt habe.
Es handelt sich um monatlich wiederkehrende Auswertungen, die beispielsweise im August erstellt wurden, jedoch unter dem Monat Juli abgelegt werden sollen.
Ich suche nun eine Möglichkeit, das Datum jeweils um einen Monat zurückzurechnen.
Habe mir schon überlegt Variablen for Monat und Jahr zu setzen und diese dann im Dateinamen zusammenzusetzen, nachdem ich den Monat um 1 reduziert habe.
Allerdings habe ich das noch nicht hinbekommen.
Außerdem würde ich mit dieser Methode Probleme beim Jahreswechsel bekommen.
--> 002008
Vielleicht hat ja schon mal jemand Erfahrungen damit gesammelt, oder kann mir weiterhelfen?!
Viele Grüße
Pascal
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 65854
Url: https://administrator.de/contentid/65854
Ausgedruckt am: 20.11.2024 um 00:11 Uhr
7 Kommentare
Neuester Kommentar
Hi,
mal auf die Schnelle.. du schreibst, das du im Excel selbst mit Makros arbeitest.. für dein Ziel wäre es aus meiner Sicht sinnvoll per VBA-Code die/den Ordner im Dateisystem zu erstellen.. kann dir jetzt im Moment nicht direkt mit Code-Beispielen helfen (hab mit VBA ne Weile nichts mehr machen müssen), aber du hättest erstmal ne Richtung zum recherchieren.. Meiner Ansicht nach ist's im VBA auch einfacher einen Monat "abzuziehen", sprich direkt mit Variablen vom Type "Date" zu arbeiten..
Gruß Markx
mal auf die Schnelle.. du schreibst, das du im Excel selbst mit Makros arbeitest.. für dein Ziel wäre es aus meiner Sicht sinnvoll per VBA-Code die/den Ordner im Dateisystem zu erstellen.. kann dir jetzt im Moment nicht direkt mit Code-Beispielen helfen (hab mit VBA ne Weile nichts mehr machen müssen), aber du hättest erstmal ne Richtung zum recherchieren.. Meiner Ansicht nach ist's im VBA auch einfacher einen Monat "abzuziehen", sprich direkt mit Variablen vom Type "Date" zu arbeiten..
Gruß Markx
Wenn du dir folgendes mal in ein Batchfile kopierst, kannst du damit (ab WinXP) dir entsprechende Ordner anlegen.
Die Berechnung des Vorjahres im Januar hat eben noch nicht hingehauen. Da muss ich nochmal drüber schlafen und poste das Ergebnis dann noch
Die Berechnung des Vorjahres im Januar hat eben noch nicht hingehauen. Da muss ich nochmal drüber schlafen und poste das Ergebnis dann noch
@echo off
for /F "delims=. tokens=2" %%B in ("%date%") do Set "MON=%%B"
If [%MON%]==[01] SET "VMN=12"
If [%MON%]==[02] SET "VMN=01"
If [%MON%]==[03] SET "VMN=02"
If [%MON%]==[04] SET "VMN=03"
If [%MON%]==[05] SET "VMN=04"
If [%MON%]==[06] SET "VMN=05"
If [%MON%]==[07] SET "VMN=06"
If [%MON%]==[08] SET "VMN=07"
If [%MON%]==[09] SET "VMN=08"
If [%MON%]==[10] SET "VMN=09"
If [%MON%]==[11] SET "VMN=10"
If [%MON%]==[12] SET "VMN=11"
SET AJR=%DATE:~-4%
SET /A VJR=%AJR% -1
echo %mon% Monat
echo %vmn% Vormonat
echo %ajr% Jahr
echo %vjr% Vorjahr
echo.
REM Zum Ordner mit Vormonat anlegen, das REM in der nächsten Zeile entfernen:
REM md C:\Monat%vmn%
pause
Moin PascalS,
wenn Du Markx' Hinweis überlesen willst und es mit native Batch angehst, dann...
Dann sollte es ausreichen.
Hat aber die Eleganz eines F.D.P-Wahlplakats.
Du solltest über die Forumssuche einige Kopien eines Anderthalb-Zeilen-Batch/VBS-Schnipsels namens "yesterdate" bzw. "gestern.vbs" finden, wo nun tatsächlich in einem Batch mit einem VBS-Aufruf wirkliche Datumswerte berechnet werden.
Dieses Aus-Textstrings-neuen-Datumsstring-Zusammenstoppeln kostet mehr Gehirnschmalz als ein Aufruf einer DateAdd()/DateDiff()-Funktion.
Grüße
Biber
wenn Du Markx' Hinweis überlesen willst und es mit native Batch angehst, dann...
Dann sollte es ausreichen.
Hat aber die Eleganz eines F.D.P-Wahlplakats.
Du solltest über die Forumssuche einige Kopien eines Anderthalb-Zeilen-Batch/VBS-Schnipsels namens "yesterdate" bzw. "gestern.vbs" finden, wo nun tatsächlich in einem Batch mit einem VBS-Aufruf wirkliche Datumswerte berechnet werden.
Dieses Aus-Textstrings-neuen-Datumsstring-Zusammenstoppeln kostet mehr Gehirnschmalz als ein Aufruf einer DateAdd()/DateDiff()-Funktion.
Grüße
Biber