Problem beim Datumsvergleich in Batch
Moin zusammen,
ich habe ein Problem.
Ich bekomme täglich eine Datei geliefert (immer der gleiche Name und da lässt sich auch nichts dran ändern.)
Jetzt soll diese Datei automatisch weiterverarbeitet werden. Dazu muss ich prüfen, ob die Datei vom aktuellen Tag ist.
Dazu habe ich mir folgendes geschrieben:
in der Ausführung sieht es dann wie folgt aus:
C:\SQL_Statements>test1
C:\SQL_Statements>FOR /F "tokens=1,2,3,4,5 delims=/. " %a in ('date/T') do set CDATE=%a%b%c
C:\SQL_Statements>set CDATE=04092015
C:\SQL_Statements>for /F "tokens=1-3 delims=. " %d in ('dir P:\sicher\bestell.exp /t:w|findstr /i /l "bestell.exp"') do set ADATE = %d%e%f
C:\SQL_Statements>set ADATE = 03092015
"goto" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
C:\SQL_Statements>if not == 04092015 goto KLEINER
Wo liegt mein Fehler?
Danke
Auric
ich habe ein Problem.
Ich bekomme täglich eine Datei geliefert (immer der gleiche Name und da lässt sich auch nichts dran ändern.)
Jetzt soll diese Datei automatisch weiterverarbeitet werden. Dazu muss ich prüfen, ob die Datei vom aktuellen Tag ist.
Dazu habe ich mir folgendes geschrieben:
FOR /F "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDATE=%%a%%b%%c
for /f "tokens=1-3 delims=. " %%d in ('dir P:\sicher\bestell.exp /t:w^|findstr /i /l "bestell.exp"') do set ADATE = %%d%%e%%f
if not %ADATE% == %CDATE% goto KLEINER
echo "Test"
:KLEINER
echo "Hier steht dann was"
in der Ausführung sieht es dann wie folgt aus:
C:\SQL_Statements>test1
C:\SQL_Statements>FOR /F "tokens=1,2,3,4,5 delims=/. " %a in ('date/T') do set CDATE=%a%b%c
C:\SQL_Statements>set CDATE=04092015
C:\SQL_Statements>for /F "tokens=1-3 delims=. " %d in ('dir P:\sicher\bestell.exp /t:w|findstr /i /l "bestell.exp"') do set ADATE = %d%e%f
C:\SQL_Statements>set ADATE = 03092015
"goto" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
C:\SQL_Statements>if not == 04092015 goto KLEINER
Wo liegt mein Fehler?
Danke
Auric
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 281972
Url: https://administrator.de/forum/problem-beim-datumsvergleich-in-batch-281972.html
Ausgedruckt am: 17.05.2025 um 03:05 Uhr
2 Kommentare
Neuester Kommentar

Moin,
der Fehler ist einmal hier
Also so
Und zusätzlich solltest du den Vergleich im IF Teil immer mit zusätzlichen Begrenzern um die Variablen machen:
dann bekommtst du auch keinen Syntax-Fehler wenn eine der Variablen leer ist.
Gruß jodel32
p.s. An das Datum/Zeit einer Datei kommst du schneller auch so:
Ich würde den Vergleich lieber per Powershell in der Batch machen:
Gruß jodel32
der Fehler ist einmal hier
set ADATE = %%d%%e%%f
Es dürfen keine Leerzeichen zwischen dem Variablennamen und dem Gleichheitszeichen stehen.Also so
set ADATE=%%d%%e%%f
if not "%ADATE%" == "%CDATE%" goto KLEINER
Gruß jodel32
p.s. An das Datum/Zeit einer Datei kommst du schneller auch so:
for %%a in (P:\sicher\bestell.exp) DO @echo %%~ta
Ich würde den Vergleich lieber per Powershell in der Batch machen:
powershell.exe -ExecutionPolicy ByPass -Command "if((get-item 'P:\sicher\bestell.exp').LastWriteTime.Date -eq (get-date).Date){'Wahr'}else{'Falsch'}"