Domanda

L'attività postbuild per una delle nostre soluzioni utilizza xcopy per spostare i file in una directory comune per creare artefatti. Per qualche motivo, sul mio computer (e su una VM che ho testato), la xcopy fallisce con "Accesso negato". Ecco cosa ho fatto per cercare di isolare i problemi:

  • Ho provato una copia normale; funziona.
  • Ho ricontrollato che nessuno dei file in questione fosse di sola lettura.
  • Ho controllato i permessi sia sulla cartella di origine che di destinazione; Ho il pieno controllo di entrambi.
  • Ho provato a chiamare xcopy dalla riga di comando nel caso in cui il processo di compilazione VS avesse bloccato il file.
  • Ho usato Unlocker ed Process Explorer per determinare che non c'erano blocchi sul file sorgente.

Cosa mi sono perso, a parte le teorie paranoiche della cospirazione che coinvolgono i computer per portarmi fuori? Questo accade sulla mia macchina di sviluppo e su una VM pulita, ma non accade per nessun altro sul progetto.

È stato utile?

Soluzione

Problema risolto; ci sono due pezzi nel puzzle.

L'opzione / O richiede l'elevazione su Vista. Inoltre, ho notato che xcopy è obsoleto in Vista a favore di robocopy. Ora sto parlando con i nostri ingegneri di costruzione di questo.

Altri suggerimenti

  

/ r = Utilizzare questa opzione per sovrascrivere i file di sola lettura nella destinazione. Se   non si utilizza questa opzione quando si desidera sovrascrivere un file di sola lettura   nella destinazione, ti verrà richiesto un " Accesso negato " messaggio e   il comando xcopy smetterà di funzionare.

Questa è stata la mia risoluzione a questo errore.

Fonte

Devi eseguire XCOPY come amministratore, non c'è modo di aggirare questo.

Se non desideri eseguire la copia come amministratore, devi utilizzare ROBOCOPY invece.

Si noti, tuttavia, che con ROBOCOPY è molto allettante utilizzare l'opzione / COPYALL , che copia anche le informazioni di controllo e richiede " Gestisci diritto utente di controllo " ;, che invita nuovamente a eseguire come amministratore come soluzione rapida. Se non desideri eseguire la tua copia come amministratore, quindi non utilizzare l'opzione / COPYALL (o / Copy: DATSOU ) . Usa invece / Copy: DATSO , poiché la U sta per aUditing.

Si noti inoltre che se si sta copiando da NTFS a un file system FAT, non è possibile " Copiare la sicurezza NTFS nella directory / file di destinazione " ;.

Di solito questo accade perché c'è un altro processo che blocca il file. Scommetto che la tua macchina ha un numero diverso di core / velocità diversa rispetto alle altre. Prova a inserire alcuni sleep per vedere se risolve il problema.

Se è possibile eliminare il file in Esplora risorse, provare a utilizzare un prompt dei comandi con privilegi elevati. Non sono sicuro del motivo per cui Windows Explorer non richiede l'autorizzazione qui per un'operazione di eliminazione che necessita dei diritti di amministratore tramite cmd.

se si sta copiando il file nella cartella IIS, è necessario eseguire il file batch come admin.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top