2013-11-22 23 views
9

Ich führe ein Batch-Skript (auf Computer A). Das Skript kopiert mehrere Dateien von einem anderen Computer (Computer B). Wenn das Stapelscript ausgeführt wird, meldet es, dass es einige Dateien von Computer B nicht in seine eigenen Verzeichnisse kopieren kann, weil es "Konflikte teilen" hat.Falsche 'Freigabeverletzung' Xcopy Fehlermeldung

Beim Lesen anderer stackoverflow-Seiten sehe ich, dass dies geschieht, wenn ein anderes Programm die Datei gesperrt hat (ein anderes Programm benutzt gerade/greift auf die Datei zu). Ich kann jedoch auf Computer B gehen und die Datei löschen, die laut Computer A gesperrt war (aufgrund von Verstößen gegen die Freigabe).

Das einzige, was ich mir vorstellen könnte, ist, dass das Batch-Skript auf Computer A die Datei (irgendwie) während eines früheren Befehls sperrt und dieser frühere Befehl ist, was die Datei sperrt? Aber ich habe Batch-Skript-Befehle, die seriell ausgeführt werden, wenn nicht anders angegeben.

Hat schon mal jemand dieses Problem gehabt? Das Skript würde erfolgreich kopiert werden, ohne Verletzungen vor einer oder zwei Wochen zu teilen. Im Skript sind keine Änderungen aufgetreten.

+0

Löschfreigabe unterscheidet sich von Lesefreigabe. –

+0

Vielleicht ** nützlich ** 'http: // techinfo.laurenceholbrook.com/FolderSharingError.html' – Kiquenet

Antwort

17

Nach viel Versuch und Irrtum ich konnte feststellen, warum ich eine gemeinsame Verletzung bekommen

ich Dateien vom Computer B zu Computer kopieren A

Ich dachte, die Freigabe-Verletzungen auftreten wurden, weil Computer B war mir nicht erlauben, eine Kopie dieser Dateien [auf seiner Festplatte gespeichert] zu machen.

In Wirklichkeit hatte das Verzeichnis auf Computer A (Computer zum Kopieren) Dateien, die ich nicht überschreiben konnte. Deshalb habe ich die geteilte Verletzung erhalten.

Eine der Dateien im Verzeichnis auf Computer A war eine ausführbare Aufgabe, von der ich dachte, dass sie getötet wurde (taskkill). Allerdings wurde diese ausführbare Datei in der Taskkill übersehen (war eigentlich nicht im Task-Manager aus irgendeinem Grund aufgeführt) Prozess und dieses Programm lief noch (die Datei wurde verwendet). Als ich versuchte, die Datei zu überschreiben, wurde xcopy daher der Zugriff verweigert, um diese Datei/ausführbare Datei zu überschreiben, was zu gemeinsamen Verletzungen führte.

Ich hatte den Eindruck, dass das Teilen von Verletzungen nur während xcopy auftreten würde, wenn die Dateien auf Computer B die Kopie nicht zulassen würden.

+4

Ende: Freigabe Verletzung Nachricht war nicht falsch ... nur nicht vollständig verstanden. – Fractal

+1

Das Genie, das dieses universelle Dienstprogramm schrieb, konnte nicht 15 Sekunden verschwenden, um eine aussagekräftigere Fehlermeldung zu schreiben –

4

Die meisten Male, wenn Sie dieses Problem haben, ist, weil ein anderes ausführbares Programm (exe) irgendwie die Dateien verwendet, die Sie kopieren möchten. Töte einfach das Programm mit ihm und die Kopie funktioniert.

2

Ich stieß auf das gleiche Problem mit xcopy in einer Batch-Datei und festgestellt, dass die Datei, die die Freigabeverletzung verursacht hatte das Attribut Nur lesen. Durch das Entfernen des Nur-Lese-Attributs konnte die Datei kopiert werden.

Ich sollte beachten, dass ich bereits die Option/R mit xcopy verwendet, um das Überschreiben von schreibgeschützten Dateien zu ermöglichen. Ich habe auch festgestellt, dass sich die Datei bereits im Zielordner mit dem Attribut "Nur lesen" befand und es scheint, dass die Nur-Lese-Funktion in der Zieldatei zurückgesetzt wurde, nachdem sie erfolgreich xkopiert wurde. Ich muss das noch weiter untersuchen. Der Schalter/K kann dies verhindern.

Auch erwähnenswert ist, dass meine Batch-Datei eine Reihe von Xcopy-Anweisungen enthielt. Die Freigabeverletzung führte zum Absturz der ersten Zeile, erlaubte jedoch, dass die Stapeldatei mit den folgenden xcopy-Zeilen fortgesetzt wurde. Der Fehler ist seit einiger Zeit unbemerkt aufgetreten, da die Nachricht zur Freigabeverletzung vom Bildschirm gescrollt wurde. Ich könnte auch versuchen, die Option/C zu verwenden, um das Kopieren fortzusetzen, selbst wenn Fehler auftreten.

Ich hoffe, dies könnte anderen helfen, die auf dieses Problem stoßen.

+0

Ich benutze '/ e/q/h/r/y' Optionen, und manchmal bekomme ich ***' Sharing Verletzung' * ** Fehler. – Kiquenet

2

Manchmal kann eine Datei/ein Verzeichnis vorübergehend nicht verfügbar/durch einen anderen Prozess gesperrt sein. Wenn Ihr Batch-Programm versucht, in diesem Moment zu kopieren, führt dies zu einem "unbekannten Fehler/geteilte Verletzung".

Die Verwendung von robocopy anstelle von "xcopy/copy" kann in diesem Fall relevanter sein, da sie nicht sofort fehlschlägt, aber einige Male wiederholt wird, bevor sie fehlschlägt.

0

Für mich trat dies auf, als ich versuchte, eine WAR-Datei in ein Tomcat-Verzeichnis zu kopieren. Ich schaute immer wieder nach, ob der Kater tatsächlich gestoppt wurde. Das Problem war, dass ich die Kriegsdatei in 7zip geöffnet hatte, während ich den Inhalt untersuchte. Ich habe 7zip und die Probleme geschlossen, wenn weg.

Offensichtlich jetzt, nicht so sehr, als dies vorkam.

Verwandte Themen