Windows CMD - Warten Sie, bis die Datei vollständig kopiert ist, und führen Sie einen Befehl aus

815
John Him

Ich versuche, einen Befehl auszuführen, nachdem eine Dateiänderung festgestellt wurde. Mein Problem ist, dass das Programm, das ich verwende, sofort wirkt, wenn eine Datei erstellt wird, das Kopieren jedoch noch nicht vollständig abgeschlossen ist.

Im Moment habe ich timeout /t 180 /nobreakmein Skript verwendet, um das Problem vorübergehend zu beheben und dann meine gewünschten Befehle ausführen zu lassen. Dies funktioniert jedoch nicht für jede Datei, die ich mache. Einige dauern länger als 180 Sekunden.

Was ich versuche zu erreichen, ist das Übertragen von Videodateien über ein lokales Netzwerk in einen freigegebenen Ordner, von dem der PC mit dem freigegebenen Ordner eine Dateiänderung / -erstellung erkennt und dann wartet, bis die Datei vollständig übertragen ist. Führen Sie dann .bat / .cmd aus

Gibt es eine Möglichkeit, dies zu tun? Jede Hilfe wird sehr geschätzt. Vielen Dank!

0

2 Antworten auf die Frage

0
Alex

Sie können die Synchronisierung von Dateien im Master-Modus (One Way Sync) verwenden. Beim Übertragen der Datei wird eine temporäre Datei erstellt und nur bei Erfolg in den tatsächlichen Dateinamen umbenannt. Wenn Ihr Überwachungsprogramm die Dateierweiterungen einer bestimmten Datei überwacht, wird es nach der Übertragung ausgewählt, sodass Sie Ihre nächste Aufgabe sofort ausführen können. Ähnliches kann mit Torrent-kompatiblen Programmen (beschränkt auf Ihr lokales Netzwerk) gemacht werden, bei denen die tatsächliche Datei nur von abgeschlossenen Übertragungen angezeigt wird.

SyncthingStandardmäßig wird PS in voreingestellten Zeitfenstern synchronisiert. Wenn Sie jedoch eine sofortige Übertragung benötigen, können Sie das dazugehörige Begleitprogramm verwenden syncthing-inotify. Auf diese Weise werden alle auf dem Quellspeicherort geänderten / erstellten / gelöschten Elemente sofort auf dem Ziel-PC repliziert.

Ich werde es einmal probieren, danke für den Vorschlag, Alex. Ich warf einen Blick auf die Website und dieses Programm erinnert mich an bittorent sync. Ich bin jetzt auf dem Handy, aber ich werde es versuchen. John Him vor 7 Jahren 0
@JohnHim Ja, es ist ähnlich wie bei bitorrent-sync, im Gegensatz dazu ist es Open Source, es erlaubt eigene Discovery- und Relay-Server oder direkt P2P-Verbindungen, die gut unterstützt werden, und läuft praktisch auf allen Geräten und Plattformen Alex vor 7 Jahren 0
0
LPChip

Sie sollten es aus einer anderen Perspektive betrachten.

Das Skript, das die Datei kopiert, weiß, wann die Übertragung abgeschlossen ist, und kann daher den Zeitpunkt angeben, zu dem die nächste Aktion beginnen soll.

Sie möchten also beide Aktionen mit demselben Skript ausführen.

Dadurch haben Sie zwei Möglichkeiten:

Remote-Ausführung

Das Programm PSExec (kann von Microsoft heruntergeladen werden) kann ein Programm auf einer Zielmaschine ausführen, wenn es mit ausreichenden Rechten gestartet wurde. Es kann verwendet werden, um das Programm auf dem Remote-Computer zu starten, nachdem der Kopiervorgang abgeschlossen ist.

Kopie umkehren

Sie kopieren gerade von der Quelle zum Ziel. Wenn Sie den Ordner, in dem sich die Datei befindet, von der Quelle aus freigeben, können Sie die Kopie auch auf der Zielseite initiieren.

I have used PSExec in the past and it is very useful. I was trying to avoid using a program from the sending side to the network folder as it will be multiple PCs doing a transfer. I will try PSExec on one PC and test it. Thanks for the suggestion. John Him vor 7 Jahren 0