
10440
14.12.2005, aktualisiert am 21.01.2010
Erstellungsdatum einer Datei per Batch auswerten?
Hallo Zusammen,
brauche mal wieder Hilfe bei einer Batchdatei.
Folgendes Szenario:
In unregelmäßigen Abständen werden große Dateien in Ordner A erstellt. Diese Dateien werden automatisch in Ordner B verschoben, damit diese dort weiterverarbeitet werden können. Dies geschieht mit einer einfachen Batchdatei die alle 5 Minuten aufgerufen wird.
Nun kann es natürlich vorkommen das beim Aufruf der Batchdatei eine Datei noch nicht vollständig im Ordner A erstellt worden ist und es beim bearbeiten im Ordner B zu einem Fehler kommt.
Meine Überlegung ist nun, vor dem verschieben in Ordner B zu Prüfen ob die Datei länger als 5 Minuten im Ordner A existiert und erst wenn dies bestätigt worden ist mit dem Verschieben
Anzufangen.
Leider ist es nicht möglich extra dafür ein Programm zu installieren so das mir nur die bescheidenen Mittel von Windows2000 bleiben.
Gibt es nun eine Möglichkeit das Erstellungsdatum / Zeit der Datei in einer Batch mit dem Systemdatum zu vergleichen?
Vielen Dank für eure Hilfe
Mandos
brauche mal wieder Hilfe bei einer Batchdatei.
Folgendes Szenario:
In unregelmäßigen Abständen werden große Dateien in Ordner A erstellt. Diese Dateien werden automatisch in Ordner B verschoben, damit diese dort weiterverarbeitet werden können. Dies geschieht mit einer einfachen Batchdatei die alle 5 Minuten aufgerufen wird.
Nun kann es natürlich vorkommen das beim Aufruf der Batchdatei eine Datei noch nicht vollständig im Ordner A erstellt worden ist und es beim bearbeiten im Ordner B zu einem Fehler kommt.
Meine Überlegung ist nun, vor dem verschieben in Ordner B zu Prüfen ob die Datei länger als 5 Minuten im Ordner A existiert und erst wenn dies bestätigt worden ist mit dem Verschieben
Anzufangen.
Leider ist es nicht möglich extra dafür ein Programm zu installieren so das mir nur die bescheidenen Mittel von Windows2000 bleiben.
Gibt es nun eine Möglichkeit das Erstellungsdatum / Zeit der Datei in einer Batch mit dem Systemdatum zu vergleichen?
Vielen Dank für eure Hilfe
Mandos
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 21609
Url: https://administrator.de/forum/erstellungsdatum-einer-datei-per-batch-auswerten-21609.html
Ausgedruckt am: 23.04.2025 um 05:04 Uhr
2 Kommentare
Neuester Kommentar
Moin Mandos,
ist ein bisschen aufwändig, da unterm CMD-Prompt keine Zeiteinheiten kleiner als 1 Tag sinnvoll als Parameter bei XCopy/NTBackup oder ähnlichen vorgesehen sind.
Und eben auch kein Datentyp "Datum" oder DateTime vorhanden ist.
Von daher ist die Frage "ist eine Datei älter als 5 Minuten" an den CLI schon etwas gemein.
Egal, eine kurze Skizze habe ich gemacht, um die Dateien vom gleichen/vom heutigen Tag zu vergleichen - wie in uralten Zeiten, indem ich vergleiche, wieviele Minuten seit Mitternacht vergangen sind. Minuten der Systemzeit %time% und Minuten der Datei-Speicherungs-Zeit.
Falls Dein Job rund um die Uhr/über Mitternacht hinweg läuft, dann musst Du Dir noch ein Kriterium ausdenken für alle Dateien, die nicht vom gleichen Tag sind.
sonstige Mimik:
Wechsel ins Quellverzeichnis, dort alle Dateien durchwackeln,
bei denen, die vom gleichen Tag sind, wird ":compareMinutes" aufgerufen.
Falls dann eine Minutendifferenz >= 5 Minuten errechnet wird, KÖNNTE verschoben werden.
HTH Biber
ist ein bisschen aufwändig, da unterm CMD-Prompt keine Zeiteinheiten kleiner als 1 Tag sinnvoll als Parameter bei XCopy/NTBackup oder ähnlichen vorgesehen sind.
Und eben auch kein Datentyp "Datum" oder DateTime vorhanden ist.
Von daher ist die Frage "ist eine Datei älter als 5 Minuten" an den CLI schon etwas gemein.
Egal, eine kurze Skizze habe ich gemacht, um die Dateien vom gleichen/vom heutigen Tag zu vergleichen - wie in uralten Zeiten, indem ich vergleiche, wieviele Minuten seit Mitternacht vergangen sind. Minuten der Systemzeit %time% und Minuten der Datei-Speicherungs-Zeit.
Falls Dein Job rund um die Uhr/über Mitternacht hinweg läuft, dann musst Du Dir noch ein Kriterium ausdenken für alle Dateien, die nicht vom gleichen Tag sind.
sonstige Mimik:
Wechsel ins Quellverzeichnis, dort alle Dateien durchwackeln,
bei denen, die vom gleichen Tag sind, wird ":compareMinutes" aufgerufen.
Falls dann eine Minutendifferenz >= 5 Minuten errechnet wird, KÖNNTE verschoben werden.
::--------getDiffInMinutes.bat
@echo off & setlocal
set "quellpfad=e:\"
Pushd %quellpfad%
REM Datetime-Delimiter sind Punkt, Doppelpunkt, SPACE bei einem Datum "16.12.2005 18:53"
set "dtdelims=.: "
for /f %%i in ('dir /b /A-d *.*') do (
Set "Filename=%%~fi"
for /f "tokens=1-5 delims=%dtdelims%" %%a in ("%%~ti") do (
If [%%a.%%b.%%c]==[%date%] call :compareMinutes %%d %%e
)
)
Popd
goto :eof
~~~~~~~~~
:compareMinutes
for /f "tokens=1-2 delims=:" %%i in ("%time%") do set /a "nowMinutes=(%%i*60)+%%j"
Echo %time:~0,5% ------ entspricht %nowMinutes% Minuten.
REM Heute sind um 18:50h 18*60+50Minuten vergangen...
set /a "FileMinutes=(%1*60) + %2"
Set /a "DiffMinutes=%nowMinutes%-%FileMinutes%"
IF %DiffMinutes% GEQ 5 echo verschiebe Datei %Filename% nach x:\yz...
goto :eof
::--------snapp getDiffInMinutes.bat
HTH Biber