Wie kann ich nicht überschreibbare Dateien auflisten?
Hallo zusammen,
zum Hintergrund:
wir haben für unsere CAM Software eine Batch geschrieben, welche Dateien per Robocopy auf eine Freigabe kopiert. Die CNC-Maschinen greifen auch auf diese Freigabe zu und kopieren die Dateien wiederum auf ihre lokale Festplatte. Die CNC-Maschinen laufen dabei teils unter Windows, teils unter Linux.
Das Problem:
Wenn Maschine A sich die Dateien von der Freigabe holt und Mitarbeiter B noch schnell eine Änderung per Script hochläd, dann wird die Datei(/Dateien) welche Maschine A in der Sekunde am kopieren ist, nicht überschrieben. Das ganze kommt tatsächlich ab und zu vor, weil die Maschinen doch teilweise sehr langsame Netzwerkkarten verbaut haben.
Das Script:
Der Wunsch:
Da Robocopy diese Dateien nicht überschreibt und nicht zwingend als "Fehler" auflistet, suche ich nach einer anderen Variante zu prüfen ob eine Datei nicht überschreibbar ist.
Quasi "Wenn eine einzige Datei nicht überschreibar ist, dann muss eine Fehlermeldung ausgegeben werden."
Hoffe ihr habt ein paar Tipps für mich ^^
zum Hintergrund:
wir haben für unsere CAM Software eine Batch geschrieben, welche Dateien per Robocopy auf eine Freigabe kopiert. Die CNC-Maschinen greifen auch auf diese Freigabe zu und kopieren die Dateien wiederum auf ihre lokale Festplatte. Die CNC-Maschinen laufen dabei teils unter Windows, teils unter Linux.
Das Problem:
Wenn Maschine A sich die Dateien von der Freigabe holt und Mitarbeiter B noch schnell eine Änderung per Script hochläd, dann wird die Datei(/Dateien) welche Maschine A in der Sekunde am kopieren ist, nicht überschrieben. Das ganze kommt tatsächlich ab und zu vor, weil die Maschinen doch teilweise sehr langsame Netzwerkkarten verbaut haben.
Das Script:
set /P FREIGABE= < .\NC-PFAD.txt
robocopy "%cd%\01-NC-Daten" "%FREIGABE%" *.h /mir /njh /njs /ns
Der Wunsch:
Da Robocopy diese Dateien nicht überschreibt und nicht zwingend als "Fehler" auflistet, suche ich nach einer anderen Variante zu prüfen ob eine Datei nicht überschreibbar ist.
Quasi "Wenn eine einzige Datei nicht überschreibar ist, dann muss eine Fehlermeldung ausgegeben werden."
Hoffe ihr habt ein paar Tipps für mich ^^
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 939732108
Url: https://administrator.de/contentid/939732108
Ausgedruckt am: 19.12.2024 um 12:12 Uhr
7 Kommentare
Neuester Kommentar
Hi,
Du könntest Robocopy ein Logfile schreiben lassen. Dieses dann anschließend nach "ERROR" oder "FEHLER" durchsuchen. Falls Treffer, dann die Kopie einfach noch einmal ausführen. Solange, bis keine Fehler gemeldet werden.
Wahrscheinlich geht das auch einfacher über die Auswertung des Errorlevel, welche Robocopy liefert. Das habe ich so noch nicht mit Batch ausprobiert.
E.
Du könntest Robocopy ein Logfile schreiben lassen. Dieses dann anschließend nach "ERROR" oder "FEHLER" durchsuchen. Falls Treffer, dann die Kopie einfach noch einmal ausführen. Solange, bis keine Fehler gemeldet werden.
Wahrscheinlich geht das auch einfacher über die Auswertung des Errorlevel, welche Robocopy liefert. Das habe ich so noch nicht mit Batch ausprobiert.
E.
Zitat von @justthename:
Die Ideen sind gut, aber bisher hat Robocopy die Dateien nicht zwangsläufig als Fehler zurück gegeben, sondern oft einfach ignoriert.
Das kann ich mir nicht vorstellen. Wenn Robocopy nichts meldet, dann konnte es die Datei auch kopieren. Es kommt ja auch immer darauf an, mit welchem "Lock" ein anderes Programm eine Datei geöffnet hat. Es gibt Write-Lock und Read-Write-Lock, bzw. gar keinen. Meines Wissens.Die Ideen sind gut, aber bisher hat Robocopy die Dateien nicht zwangsläufig als Fehler zurück gegeben, sondern oft einfach ignoriert.
Und dann ist da noch das Timing. Es könnte sein, dass Robocopy eine Datei bereits behandelt hat und danach erst wird diese geändert. Das berücksichtigt Robocopy dann natürlich nicht.
Du könntest Robocopy auch einfach pauschal 5x hintereinander ausführen, mit kleinen Pausen dazwischen. Da Du "/MIR" verwendest, sollten ggf. unnötige Läufe von Robocopy auch nur geringen Traffic produzieren.
Moin,
willst du wissen, ob die Datei auf einen Fehler gelaufen ist oder reicht es auch, wenn die Datei nach 30Sek. noch einmal kopiert wird?
Letzteres geht mit den Parametern /w:<value> und /r:<value>
Edit:
Schaue dir mal den Exitcode 8 an:
https://docs.microsoft.com/de-de/windows-server/administration/windows-c ...
Gruß
em-pie
willst du wissen, ob die Datei auf einen Fehler gelaufen ist oder reicht es auch, wenn die Datei nach 30Sek. noch einmal kopiert wird?
Letzteres geht mit den Parametern /w:<value> und /r:<value>
Edit:
Schaue dir mal den Exitcode 8 an:
https://docs.microsoft.com/de-de/windows-server/administration/windows-c ...
Gruß
em-pie