Batch Anpassung der Syntax bei IF EXIST bei Datum
Hallo Zusammen,
da habe ich doch glat bei einer Batch ein groben Denkfehler drin und jetzt stecke ich fest. Alles was ich finde ist so dermaßen kompliziert....
Gibt es für folgendes Problem nicht eine einfachere Lösung?
Aus einem anderen Programm heraus wird diese Datei erzeugt: 2019_10_ID_99.pdf
Dieser Batch Teil soll prüfen, ob die Datei vorhanden ist. Läuft via Task. Aber immer am ersten eines Monats, spich die Datei wird am 01.11. erzeugt und bekommt den Dateinamen oben, weil die enthalten Daten eben aus den Monat 10 und nicht 11 stammen.
Das dumme ist nur dass die Datumssytax eben nach: 2019_11_ID_*.pdf ausgibt und diese Datei kann es nicht geben! Dumm gelaufen...
Entweder muss ich jetzt dafür sorgen, dass er eben bei: %DATE:~-7,2% einen Monat abzieht oder mir würde es auch schon reichen, wenn ich eine Möglichkeit hätte:
zu prüfen!
Hat hier jemand eine schnelle Lösung parat?
Danke
da habe ich doch glat bei einer Batch ein groben Denkfehler drin und jetzt stecke ich fest. Alles was ich finde ist so dermaßen kompliziert....
Gibt es für folgendes Problem nicht eine einfachere Lösung?
Aus einem anderen Programm heraus wird diese Datei erzeugt: 2019_10_ID_99.pdf
Dieser Batch Teil soll prüfen, ob die Datei vorhanden ist. Läuft via Task. Aber immer am ersten eines Monats, spich die Datei wird am 01.11. erzeugt und bekommt den Dateinamen oben, weil die enthalten Daten eben aus den Monat 10 und nicht 11 stammen.
if exist "C:\...\%DATE:~-4%_%DATE:~-7,2%_ID_*.pdf"
(
goto existiert
) else (
goto wiederh
)
Das dumme ist nur dass die Datumssytax eben nach: 2019_11_ID_*.pdf ausgibt und diese Datei kann es nicht geben! Dumm gelaufen...
Entweder muss ich jetzt dafür sorgen, dass er eben bei: %DATE:~-7,2% einen Monat abzieht oder mir würde es auch schon reichen, wenn ich eine Möglichkeit hätte:
if exist "C:\...\%DATE:~-4%_*_ID_*.pdf" Datei hat ein gesetztes Archivbit
Hat hier jemand eine schnelle Lösung parat?
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 511147
Url: https://administrator.de/forum/batch-anpassung-der-syntax-bei-if-exist-bei-datum-511147.html
Ausgedruckt am: 24.04.2025 um 19:04 Uhr
9 Kommentare
Neuester Kommentar

Dein Fragenkontingent für 2019 ist aufgebraucht
. Vor allem wenn man in Titel solche Patzer einbaut macht sich doch keiner mehr die Mühe den Rest zu lesen ...
Kein Wunder wenn man 2019 noch mit einer Sprache rumbastelt die vor 30 Jahren schon zum alten Eisen gehörte und dann noch nicht mal die Suche zu Batch hier bemüht ...
Sowas macht man heute aber gleich mit der Powershell
Wobei es vermutlich auch wohl schon reichen würde einfach das aktuellste File der Sorte zu nehmen
Tschö.
Ich gebe mir ja Mühe das selber zu lösen und versuche mich da rein zu denken. Aber mit Schleifen und bei machnen Syntax habe ich halt meine Probleme.
Und das seit 2005 noch immer ??Kein Wunder wenn man 2019 noch mit einer Sprache rumbastelt die vor 30 Jahren schon zum alten Eisen gehörte und dann noch nicht mal die Suche zu Batch hier bemüht ...
for /f "delims=" %%a in ('dir /b /a-d /od "D:\Ordner\*.pdf" ^| findstr /irc:"^2[0-9][0-9][0-9]_[0-9][0-9]_ID_.*"') do set "file=%%a"
echo %file%
Sowas macht man heute aber gleich mit der Powershell
gci "D:\Ordner\$((get-date).AddMonths(-1).toString('yyyy_MM'))_ID_*.pdf" -File | ?{$_.Attributes.HasFlag([System.IO.FileAttributes]::Archive)}
gci "D:\Ordner\2[0-9][0-9][0-9]_[0-1][0-9]_ID_*.pdf" -File | ?{$_.Attributes.HasFlag([System.IO.FileAttributes]::Archive)} | sort LastWriteTime -Desc | select -F 1

Verstehst ja offensichtlich auch die Batch nicht
.
Vor allem ändern sich heutzutage Anforderungen ganz schnell, und für heutige Anforderungen stößt Batch einfach in vielen Sachen an seine Grenzen ohne krude Umwege zu gehen. Das fängt schon bei so banalanen Sachen wie Text-Kodierungen an die manche Batchtools nicht einheitlich umsetzen und man so dauernd Umwege gehen muss, die einen vom eigentlichen Projekt ablenken und Fehler verursachen.
Könnte man ewig so fortsetzen.
Aber wenn man sich doch auf Batch bzw. DOS einigermaßen eingeschossen hat und so lange es von Windows unterstützt wird, warum soll ich das dann mit Powershell machen? Ist das eine Glaubensfrage oder wie muss ich das verstehen?
Jemand der die Powershell nicht kennt fragt sich das, lerne Powershell und das Fragezeichen löst sich ganz schnell in Luft auf.Vor allem ändern sich heutzutage Anforderungen ganz schnell, und für heutige Anforderungen stößt Batch einfach in vielen Sachen an seine Grenzen ohne krude Umwege zu gehen. Das fängt schon bei so banalanen Sachen wie Text-Kodierungen an die manche Batchtools nicht einheitlich umsetzen und man so dauernd Umwege gehen muss, die einen vom eigentlichen Projekt ablenken und Fehler verursachen.
Wenn du magst, darfst du mich gerne Überzeugen zu konvertieren, nenne mir drei Gründe warum man zwingend zu Powershell wechsel soll, wenn es auch mit DOS geht?
- CMD Bugs die nie gefixt wurden
- CMD hat diverse Beschränkung von Datentypen, Zeilenlängen, und Wertgrößen, bestimmte Sachen wie Berechnungen von großen Zahlen nur umständlich zu realisieren
- Ohne Umwege wie über WSH rechnet Batch nicht mit Datumswerten
- Per PS sind so gut wie keine Drittanbietertools mehr nötig
- komplette programmierfähige Umgebung mit Forms usw. usf
- Versuch mal mit rein Batch ohne Thirdparty Tools einen Exchange Server zu verwalten ...
- Solche Sachen die du hier gerade z.B. erfragst musst du dann nicht mehr über krude Umwege lösen sondern kannst klar und logisch mit den Objekten arbeiten ohne sich für solche banalanen Dinge mit Batch einen abzubrechen, Suche und Recherche wenn man sich nicht auskennt kostet ja auch Zeit.
- Immer mehr Beschränkungen und Bugs mit neuen OS Funktionen die nicht mehr gefixt werden.
- usw. usw.
Könnte man ewig so fortsetzen.

Oh man stimmt, dass ist ein PATZER, sorry, da habe ich wohl gepennt, in der Überschrift. Soll natürlich heißen: IF EXIST
Warum änderst du es dann nicht?

👍