Auf voherigen Tag zugreifen
Hallo zusammen,
leider finde ich nicht das was ich suche.
Ich erstelle jeden Tag mit einer batch-Datei eine .txt Datei.
Die Dateien haben immer das Tagesdatum bei der Erstellung:
set mydate=%date:~-4%-%date:~-7,2%-%date:~-10,2%
set "datei2=%mydate% xxxxx.txt"
if exist "%datei2%" move "%datei2%" "%datei2%.bak"
echo %mydate% %mytime% %1 >"%datei2%"
if exist "%datei2%.bak" type "%datei2%.bak">>"%datei2%"
Dies ist auch soweit in Ordnung.
Jetzt möchte ich einen Tag später auf die Datei zugreifen und diese in einen Ordner verschieben. Wie kann ich dies realisieren bzw. wie kann ich af die Datei zugreifen?
Dank & Gruß Joe.Baer
leider finde ich nicht das was ich suche.
Ich erstelle jeden Tag mit einer batch-Datei eine .txt Datei.
Die Dateien haben immer das Tagesdatum bei der Erstellung:
set mydate=%date:~-4%-%date:~-7,2%-%date:~-10,2%
set "datei2=%mydate% xxxxx.txt"
if exist "%datei2%" move "%datei2%" "%datei2%.bak"
echo %mydate% %mytime% %1 >"%datei2%"
if exist "%datei2%.bak" type "%datei2%.bak">>"%datei2%"
Dies ist auch soweit in Ordnung.
Jetzt möchte ich einen Tag später auf die Datei zugreifen und diese in einen Ordner verschieben. Wie kann ich dies realisieren bzw. wie kann ich af die Datei zugreifen?
Dank & Gruß Joe.Baer
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 207569
Url: https://administrator.de/forum/auf-voherigen-tag-zugreifen-207569.html
Ausgedruckt am: 18.04.2025 um 21:04 Uhr
2 Kommentare
Neuester Kommentar
Moin Joe Baer,
willkommen im Forum.
Der CMD-Befehlsumfang beinhaltet ja nun leider nix, was in Richtung "Datumsarithmetik" geht - es gibt schlicht und einfach keinen Datentyp "Datum/Zeit" im Befehlsinterpreter.
Also musst du hier Umwege gehen und dazu kannst du über unsere Suchfunktion einige Varianten finden.
Mogliche Lösungsstrategie a)
Die CMD.exe kennt zwar kein "Datum" und daher auch kein "gestern" oder "morgen", aber mit verfügbaren Standardtools wie VBScript/JScript können das durchaus. Ein VBScript kannst du aus der Batchdatei heraus temporär erzeugen, aufrufen und das Ergebnis für deine Zwecke verarbeiten. Suche mal nach "gestern.vbs" oder "yesterday.vbs" hier in der Forumssuche.
Mögliche Strategie b)
Die "gestern" erzeugte Datei, die verschoben werden soll, ist ja immer die "jüngste" Datei (mit der Namenskonvention "201?-??-?? xxxxx,txt", Die Datei(en) kannst du mit dem "DIR /od"-Befehl nach Datum sortiert anzeigen lassen und mit einer FOR-Anweisung die jüngste/älteste rausflöhen. Suche dazu nach "neueste Datei/älteste Datei"
Mögliche Alternativ-Strategie)
Verzichte auf den Datumsstempel im Dateinamen - mache es stattdessen über einen Zähler, eine laufende Nummer im Dateinamen,
Von Dateien der Konvention "Log_1024.txt", "Log_1025.txt, ..." (oder allgemein: von namensbezogen eindeutig sortierbaren Dateien) kannst du immer die letzte vorhandene und die nächste freie ermitteln (oder "berechnen").
Grüße
Biber
willkommen im Forum.
Der CMD-Befehlsumfang beinhaltet ja nun leider nix, was in Richtung "Datumsarithmetik" geht - es gibt schlicht und einfach keinen Datentyp "Datum/Zeit" im Befehlsinterpreter.
Also musst du hier Umwege gehen und dazu kannst du über unsere Suchfunktion einige Varianten finden.
Mogliche Lösungsstrategie a)
Die CMD.exe kennt zwar kein "Datum" und daher auch kein "gestern" oder "morgen", aber mit verfügbaren Standardtools wie VBScript/JScript können das durchaus. Ein VBScript kannst du aus der Batchdatei heraus temporär erzeugen, aufrufen und das Ergebnis für deine Zwecke verarbeiten. Suche mal nach "gestern.vbs" oder "yesterday.vbs" hier in der Forumssuche.
Mögliche Strategie b)
Die "gestern" erzeugte Datei, die verschoben werden soll, ist ja immer die "jüngste" Datei (mit der Namenskonvention "201?-??-?? xxxxx,txt", Die Datei(en) kannst du mit dem "DIR /od"-Befehl nach Datum sortiert anzeigen lassen und mit einer FOR-Anweisung die jüngste/älteste rausflöhen. Suche dazu nach "neueste Datei/älteste Datei"
Mögliche Alternativ-Strategie)
Verzichte auf den Datumsstempel im Dateinamen - mache es stattdessen über einen Zähler, eine laufende Nummer im Dateinamen,
Von Dateien der Konvention "Log_1024.txt", "Log_1025.txt, ..." (oder allgemein: von namensbezogen eindeutig sortierbaren Dateien) kannst du immer die letzte vorhandene und die nächste freie ermitteln (oder "berechnen").
Grüße
Biber
Hi Joe.Baer,
wie von Biber schon augeführt, gibts in
Dazu benötigst du zu aller erst einen Anker im Ozean der Zeit. Von diesem Fixpunkt an beginnst du einfach die Tage zu zählen, denn die brauchst du ja. Nun kannst du bequem das Datum in Tage umrechnen. Die Wahl des Fixpunktes bleibt dir überlassen, anbieten würden sich Kaisers Geburtstag oder der Hochzeitstag der Grossmutter
Wenn du keinen gesteigerten Wert darauf legst, den Nullpunkt selbst festzulegen, kannst du natürlich auf eine Funktion aus dem Netz zurückgreifen. Ich jedenfalls greife mir dann gern diese.
Gruss!
wie von Biber schon augeführt, gibts in
cmd
keine Funktion Date2Number
. Wenn du also bei deinem Arbeitspfad bleiben möchtest, musst du diese Funktion selbst implementieren.Dazu benötigst du zu aller erst einen Anker im Ozean der Zeit. Von diesem Fixpunkt an beginnst du einfach die Tage zu zählen, denn die brauchst du ja. Nun kannst du bequem das Datum in Tage umrechnen. Die Wahl des Fixpunktes bleibt dir überlassen, anbieten würden sich Kaisers Geburtstag oder der Hochzeitstag der Grossmutter
Wenn du keinen gesteigerten Wert darauf legst, den Nullpunkt selbst festzulegen, kannst du natürlich auf eine Funktion aus dem Netz zurückgreifen. Ich jedenfalls greife mir dann gern diese.
Gruss!