Dateien kopieren per Batch Abfrage auf Zugriff
Hallo zusammen,
ich möchte gerne regelmäßig Dateien aus einem Verzeichnis in ein anderes Verzeichnis kopieren.
Das Problem ist aber, dass diese Dateien evtl. zum Kopierzeitpunkt noch aufgebaut werden.
Gibt es eine Abfrage ob eine Datei von anderen Prozessen verwendet wird?
Sollte alles per Batch oder Script möglich sein,
Danke
ich möchte gerne regelmäßig Dateien aus einem Verzeichnis in ein anderes Verzeichnis kopieren.
Das Problem ist aber, dass diese Dateien evtl. zum Kopierzeitpunkt noch aufgebaut werden.
Gibt es eine Abfrage ob eine Datei von anderen Prozessen verwendet wird?
Sollte alles per Batch oder Script möglich sein,
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 95322
Url: https://administrator.de/forum/dateien-kopieren-per-batch-abfrage-auf-zugriff-95322.html
Ausgedruckt am: 14.04.2025 um 04:04 Uhr
5 Kommentare
Neuester Kommentar
Das einzige was mir da einfällt wäre es den Zeitpunkt der letzten Änderung zu kontrollieren, dann etwas zu warten und danach wieder. Ist der letzte Änderungszeitpunkt der gleiche wird sie nicht mehr verändert.
Das ganze würde dann ungefär so aussehen:
Das ganze würde dann ungefär so aussehen:
1
2
3
4
5
6
2
3
4
5
6
:loop
for /F \"tokens=1,2 delims= \" %%f in (\'dir /a-D /Tw /-C \"Datei.txt\"^|find \".\"\') do Set \"change1=%%f%%g\"
ping -n 1 localhost
for /F \"tokens=1,2 delims= \" %%f in (\'dir /a-D /Tw /-C \"Datei.txt\"^|find \".\"\') do Set \"change2=%%f%%g\"
if change2 neq change1 goto:loop
copy Datei.txt
Wenn er mehrere Dateien sind an könntest du das Ganze so erweitern:
Willst du weniger Prüfungen haben kannst du auch dort noch eien Wartezeit einfügen. indem du zwischen Zeile 9 und 10 noch folgende einfügst:
Mit der Änderungszeit zu arbeiten und dann immer eine Minute zu warten wäre zwar auch möglich, aber aufwendig in batch. Um mit Zeiten zu arbeiten bietet sich dan eher vbs an.
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
for /F "delims=" %%f in ('dir /b') do call loop "%%~f"
goto:eof
:loop
Set "change1="
Set "change2="
for /F "tokens=1,2 delims= " %%f in ('dir /a-D /Tw /-C "%~1"^|find "."') do Set "change1=%%f%%g"
ping -n 1 localhost
for /F "tokens=1,2 delims= " %%f in ('dir /a-D /Tw /-C "%~1"^|find "."') do Set "change2=%%f%%g"
if change2 neq change1 goto:loop
copy "%~1"
goto:eof
ping -n 5 localhost
um 5 sekunden zu warten.Mit der Änderungszeit zu arbeiten und dann immer eine Minute zu warten wäre zwar auch möglich, aber aufwendig in batch. Um mit Zeiten zu arbeiten bietet sich dan eher vbs an.