as-n00
Goto Top

In Batch auf Erstelldatum einer Datei prüfen

Hallo,

foolgendes Problem.
Ich muss eine leer Datei "dpd.ini" in "d:\bw50" erstellen,
wenn in einem Ordner "d:\bw50\dpd\export\" es keine Datei "DPD_Export.csv" gibt, welche heute erstellt ist und
es im Ordner "D:\bw50\DHL\Abschluss\" es keine Datei "ElSend*" gibt die heute erstellt ist.
Trifft eines der beiden zu, muss die eventuell vorhandene "dpd.ini" gelöscht werden.
Ich habe das so versucht, geht aber irgend wie nicht.
Scheinbar klappt der zweite teil ab :dhl nicht.
Vielleicht ist die Datumsabfrage der dhl Datei verkehrt?

echo. > d:\bw50\dpd.ini

if NOT %1.==. goto %1
set Datum=%date%

for %%f in ("d:\bw50\dpd\export\DPD_Export_SchneiderMusik GmbH.csv") do call %0 dpdDateCheck %%~tf "%%f"   
goto File_Fin

:dpdDateCheck
if %2.==%Datum%. goto dpdGroesse
goto File_Fin

:dpdGroesse

for %%A in ("d:\bw50\dpd\export\DPD_Export_.csv") do if %%~zA GTR 0 (  
goto dhl
) Else (
goto File_Fin
)



:dhl
for %%f in ("D:\bw50\DHL\Abschluss\ELSend*") do call %0 dhlDateCheck %%~tf "%%f"   
del D:\bw50\dpd.ini
goto File_Fin

:dhlDateCheck
if %2.==%Datum%. goto dhlGroesse
goto File_Fin

:dhlGroesse

for %%A in ("D:\bw50\DHL\Abschluss\ELSend*") do if %%~zA GTR 0 (  
goto File_Fin
) Else (
del D:\bw50\dpd.ini
)



:File_Fin
exit

Content-ID: 325560

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

Ausgedruckt am: 18.11.2024 um 05:11 Uhr

MrCount
Lösung MrCount 05.01.2017 um 13:55:29 Uhr
Goto Top
Servus,

vielleivht hilft dir dieser Beitrag (Antwort von Biber) weiter...
AS-N00
AS-N00 05.01.2017 um 13:58:07 Uhr
Goto Top
Nein, die Zeitabfrage ansich geht ja, für die dpd Datei funtioniert es auch, nur bei der dhl datei nicht.
Clijsters
Lösung Clijsters 05.01.2017 aktualisiert um 14:09:16 Uhr
Goto Top
Hallo.

Merkwürdig, wo der Code doch scheinbar (stump) kopiert wurde.

Vielleicht triffst du noch eine kurze Aussage dazu, was nicht geht, wie es sich äußert und was du erwartest.

Auf Anhieb kann ich nur sagen, dass das Doing innerhalb der Größenabfrage sich ja auch stark unterscheidet. (Gäbe es auch eine dhl.ini?)

LG

EDIT: Jetzt habe ich verstanden, dass die dhl-Aktion ja von der dpd-Aktion abhängt. Verwirrend...
AS-N00
AS-N00 05.01.2017 um 16:00:36 Uhr
Goto Top
Es geht solange die dpd Datei noch nicht vorhanden ist, oder älter als heute.
Die wird dann irgend wann erstellt und dann sollte die dpd.ini gelöscht werden.
Irgend wann später wird dann die dhl Datei erstellt, dann soll die dpd.ini wieder erstellt werden,
aber eben nur, wenn die dhl Datei von heute ist.
Letzteres geht eben nicht, die dpd.ini wird nur dann erstellt bzw. micht gelöscht, wenn die dhl Datei gar nicht da ist.
Er scheint die Prüfung auf das heutige Erstellungsdatum bei der dhl datei nicht zu machen.
AS-N00
AS-N00 05.01.2017 aktualisiert um 17:31:50 Uhr
Goto Top
Es lag an der DHL Schleife, die hat sich selbst ins Bein gebissen.
Ich lösche jetzt erstmal die alten Dateien aus dem DHL Verzeichnis und frage dann nur die neueste ab.
Falls es jemand benötigt, hier ist die Lösung:

echo. > d:\bw50\dpd.ini
if NOT %1.==. goto %1
set Datum=%date%

for %%f in ("d:\bw50\dpd\export\DPD_Export_.csv") do call %0 dpdDateCheck %%~tf "%%f"   
goto File_Fin


:dpdDateCheck
if %2.==%Datum%. goto dpdGroesse
goto File_Fin


:dpdGroesse
for %%A in ("d:\bw50\dpd\export\DPD_Export_.csv") do if %%~zA GTR 0 (  
goto dhl
) Else (
goto File_Fin
)

:dhl
for /f "skip=1 delims=" %%i in ('dir /b /a-d /o-d "D:\BW50\DHL\Abschluss"') do del "D:\BW50\DHL\Abschluss\%%i"   

for %%f in ("d:\bw50\DHL\Abschluss\*") do call %0 dhlDateCheck %%~tf "%%f"   
goto File_Fin


:dhlDateCheck
if %2.==%Datum%. goto FileFin
goto dhlGroesse


:dhlGroesse
for %%A in ("d:\bw50\DHL\Abschluss\*") do if %%~zA GTR 0 (  
del d:\bw50\dpd.ini
goto File_Fin
) Else (
goto File_Fin
)

:FileFin
exit