2013-11-22 17 views
9

Sto eseguendo uno script batch (sul computer A). Lo script copia diversi file da un altro computer (computer B). Quando viene eseguito lo script batch, segnala che non è in grado di copiare alcuni file dal computer B nelle proprie directory a causa di "Condivisione delle violazioni".False 'Sharing Violation' Xcopy messaggio di errore

Leggendo altre pagine StackOverflow, vedo che ciò accade quando un altro programma ha il file bloccato (un altro programma sta attualmente utilizzando/accede al file). Tuttavia, posso andare sul computer B e cancellare il file che il computer A ha affermato è stato bloccato (a causa della condivisione di violazioni).

L'unica cosa che posso immaginare potrebbe accadere è che lo script batch sul computer A sta bloccando il file (in qualche modo) durante un comando precedente e questo comando precedente è ciò che sta bloccando il file? Ma penso che i comandi di script batch siano eseguiti in serie se non diversamente specificato.

Qualcuno ha mai avuto questo problema prima? Lo script copierà correttamente senza condividere le violazioni circa una settimana o due fa. Nessuna modifica si è verificata nello script.

+0

La condivisione di eliminazione è diversa dalla condivisione di lettura. –

+0

Forse ** utile ** 'http: // techinfo.laurenceholbrook.com/FolderSharingError.html' – Kiquenet

risposta

17

Dopo molti tentativi ed errori sono stato in grado di determinare il motivo per cui mi è stato sempre una violazione condiviso

ero copia di file dal computer B al computer A

ho pensato che le violazioni di condivisione si verificavano perché il computer B era non permettendomi di fare una copia di quei file [memorizzati sul suo hard disk].

In realtà, la directory sul computer A (copia del computer in) conteneva file su cui non ero in grado di scrivere. Questo è il motivo per cui ho ricevuto la violazione condivisa.

Uno dei file nella directory sul computer A era un task eseguibile che pensavo fosse stato ucciso (taskkill). Tuttavia, questo eseguibile è stato trascurato nel taskkill (in realtà non era elencato nel task manager per qualche motivo) processo e questo programma era ancora in esecuzione (il file era in uso). Pertanto, quando ho provato a sovrascrivere il file, a xcopy è stato negato l'accesso per sovrascrivere questo file/eseguibile, causando violazioni condivise.

Avevo l'impressione che la condivisione di violazioni si sarebbe verificata solo durante xcopy se i file sul computer B non consentivano la copia.

+4

Fine: il messaggio di condivisione della violazione NON era Falso ... semplicemente non completamente compreso. – Fractal

+1

Il genio che ha scritto questa utilità universale non ha risparmiato 15 secondi per scrivere un messaggio di errore più significativo –

4

La maggior parte delle volte in cui si verifica questo problema è perché un altro programma eseguibile (exe) utilizza in qualche modo i file su cui si desidera copiare. Basta uccidere il programma che lo utilizza e la copia funzionerà.

2

Ho riscontrato lo stesso problema con xcopy in un file batch e ho scoperto che il file che causa la violazione di condivisione aveva l'attributo Sola lettura impostato. La rimozione dell'attributo di sola lettura ha permesso di copiare il file.

Si noti che stavo già utilizzando l'opzione/R con xcopy per consentire la sovrascrittura dei file di sola lettura. Ho anche scoperto che il file si trovava già nella cartella di destinazione con il set di attributi Read Only e sembra che Read Only sia stato reimpostato sul file di destinazione dopo che è stato eseguito correttamente xcopied. Devo ancora indagare ulteriormente. L'opzione/K potrebbe impedirlo.

Vale anche la pena notare che il mio file batch conteneva una serie di istruzioni xcopy. La violazione della condivisione ha bloccato la prima riga, ma ha consentito al file batch di continuare con le successive linee xcopy. L'errore si era verificato inosservato per un po 'di tempo, poiché il messaggio di violazione della condivisione era sceso dallo schermo. Potrei anche provare a utilizzare l'opzione/C per continuare a copiare anche se si verificano errori.

Spero che questo possa aiutare gli altri a risolvere questo problema.

+0

Io uso le opzioni '/ e/q/h/r/y', e talvolta ottengo ***' Condivisione violazione '* ** errori. – Kiquenet

2

A volte un file/directory può essere temporaneamente non disponibile/bloccato da un altro processo. Se il tuo programma batch tenta di copiare in quel momento, si verificherà un "errore sconosciuto/violazione condivisa".

L'utilizzo di robocopy invece di "xcopy/copy" può essere più rilevante in tal caso, poiché non fallisce immediatamente, ma riprova un paio di volte prima di fallire.

0

Per me questo si è verificato quando stavo tentando di copiare un file di guerra in una directory tomcat. Ho continuato a controllare per vedere che, in effetti, Tomcat è stato fermato. Il problema era che avevo il file di guerra aperto in 7zip mentre stavo esaminando il contenuto. Ho chiuso 7zip e i problemi quando sono via.

Ovvio ora, non tanto quando questo si verificava.