justthename
Goto Top

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:
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 ^^

Content-ID: 939732108

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

Ausgedruckt am: 19.11.2024 um 05:11 Uhr

emeriks
emeriks 08.07.2021 um 08:45:45 Uhr
Goto Top
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.
NordicMike
NordicMike 08.07.2021 um 09:08:36 Uhr
Goto Top
Robocopy kann man jedoch auch anhalten lassen mit einer Frage "wiederholen? ja / nein"
justthename
justthename 08.07.2021 um 10:43:17 Uhr
Goto Top
Die Ideen sind gut, aber bisher hat Robocopy die Dateien nicht zwangsläufig als Fehler zurück gegeben, sondern oft einfach ignoriert.
emeriks
emeriks 08.07.2021 um 10:52:41 Uhr
Goto Top
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.
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.
em-pie
Lösung em-pie 08.07.2021 aktualisiert um 11:41:40 Uhr
Goto Top
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
justthename
justthename 12.07.2021 um 13:12:41 Uhr
Goto Top

Was ich anfangs auch übersehen habe war, dass Robocopy diese Dateien als "Übersprungen" auflistet.
Die Wiederholung bringt da leider gar nichts, aber ich frage den Exitcode jetzt ab geb darüber eine Fehlermeldung aus.

set /P NCDATENPFAD= < .\NC-PFAD.txt
robocopy "%cd%\01-NC-Daten" "%NCDATENPFAD%" *.h /mir /njh /njs /ns  
IF ERRORLEVEL 8 ( echo Fehler beim Kopiervorgang! & echo Die aufgelisteten NC-Daten wurden nicht übertragen! )
justthename
justthename 12.07.2021 um 13:15:00 Uhr
Goto Top
Vielen Dank für die Hilfe!!