zeroblue2005
Goto Top

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.

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  
zu prüfen!

Hat hier jemand eine schnelle Lösung parat?

Danke

Content-Key: 511147

Url: https://administrator.de/contentid/511147

Printed on: April 18, 2024 at 09:04 o'clock

Member: zeroblue2005
zeroblue2005 Nov 01, 2019 updated at 11:22:29 (UTC)
Goto Top
Könnte man hiermit arbeiten?

Die Syntax scheint aber nicht zu passen oder?

@echo
for /f %%o in ('attrib "C:\Program Files\RAP\PDF\Monatsstatistik\2019_10_ID_99.pdf"') do (   
if "%%o" == "A" (   
echo bit gesetzt
pause
) else ( 
echo bit nicht gesetzt
pause
)
pause
Member: zeroblue2005
zeroblue2005 Nov 03, 2019 at 09:42:09 (UTC)
Goto Top
Stelle ich die falschen Frangen oder warum mag mir keiner Helfen? 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.
Mitglied: 141575
Solution 141575 Nov 03, 2019 updated at 11:55:44 (UTC)
Goto Top
Zitat von @zeroblue2005:

Stelle ich die falschen Frangen oder warum mag mir keiner Helfen?
Dein Fragenkontingent für 2019 ist aufgebraucht face-wink. Vor allem wenn man in Titel solche Patzer einbaut macht sich doch keiner mehr die Mühe den Rest zu lesen ...
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)}  
Wobei es vermutlich auch wohl schon reichen würde einfach das aktuellste File der Sorte zu nehmen
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  
Tschö.
Member: zeroblue2005
zeroblue2005 Nov 03, 2019 updated at 13:36:07 (UTC)
Goto Top
Hallo Chickenwning,

erstmal lieben Dank für die Syntax, damit komme ich weiter face-smile

wusste garnicht das es ein Kontingent gibt? Oh man stimmt, dass ist ein PATZER, sorry, da habe ich wohl gepennt, in der Überschrift. Soll natürlich heißen: IF EXIST

Das Thema mit der Powershell verstehe ich hier einfach nicht, na klar ist die mächtiger und moderner. 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?

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?
Mitglied: 141575
141575 Nov 03, 2019 updated at 14:11:10 (UTC)
Goto Top
Zitat von @zeroblue2005:
Das Thema mit der Powershell verstehe ich hier einfach nicht,
Verstehst ja offensichtlich auch die Batch nicht face-smile.
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.
Member: zeroblue2005
zeroblue2005 Nov 03, 2019 at 15:07:53 (UTC)
Goto Top
ok danke
Mitglied: 141575
141575 Nov 04, 2019 at 06:52:44 (UTC)
Goto Top
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?
Member: zeroblue2005
zeroblue2005 Nov 04, 2019 at 07:03:02 (UTC)
Goto Top
Erledigt face-wink
Mitglied: 141575
141575 Nov 04, 2019 at 09:25:17 (UTC)
Goto Top
👍