La tâche de post-construction de l'une de nos solutions utilise xcopy pour déplacer les fichiers dans un répertoire commun pour les artefacts de construction. Pour une raison quelconque, sur mon ordinateur (et sur un VM que j'ai testé), xcopy échoue avec le message "Accès refusé". Voici ce que j'ai fait pour essayer d'isoler les problèmes:
Qu'est-ce qui m'a manqué, mis à part les théories du complot paranoïaques impliquant des ordinateurs pour me chercher? Cela se produit sur ma machine de développement et sur une machine virtuelle propre, mais ne se produit pas pour quiconque se trouvant sur le projet.
Problème résolu; il y a deux pièces dans le puzzle.
Le commutateur/O nécessite une élévation sur Vista. De plus, j'ai remarqué que xcopy est obsolète dans Vista au profit de robocopy. Maintenant, je parle avec nos ingénieurs de construction à ce sujet.
/ r = Utilisez cette option pour écraser les fichiers en lecture seule de la destination. Si Vous n'utilisez pas cette option lorsque vous souhaitez écraser un fichier en lecture seule Dans la destination, un message "Accès refusé" et le message La commande xcopy s'arrêtera.
C'était ma résolution à cette erreur.
Vous devez exécuter XCOPY en tant qu'administrateur, il n'y a aucune solution.
Si vous ne souhaitez pas exécuter votre copie en tant qu'administrateur, vous devez utiliser ROBOCOPY à la place.
Notez cependant qu'avec ROBOCOPY, il est très tentant d’utiliser le commutateur /COPYALL
, qui copie également les informations d’audit et requiert le «droit d’utilisateur Gérer l’audit», qui vous invite une nouvelle fois à s’exécuter en tant qu’administrateur. Si vous ne voulez pas exécuter votre copie en tant qu'administrateur, alors n'utilisez pas le commutateur le /COPYALL
(ou /Copy:DATSOU
). À la place, utilisez /Copy:DATSO
, car le U représente aUdit.
Notez également que si vous copiez à partir de NTFS vers un système de fichiers FAT, vous ne pouvez "copier la sécurité NTFS dans le répertoire/fichier de destination".
Cela se produit généralement car un autre processus verrouille le fichier. Je parie que votre machine a un nombre de cœurs/une vitesse différente des autres. Essayez d'insérer des couches pour voir si cela résout le problème.
si vous copiez le fichier dans le dossier IIS, vous devez exécuter le fichier de commandes en tant qu'administrateur.
Si vous pouvez supprimer le fichier dans l'Explorateur Windows, essayez d'utiliser une invite avec une commande élevée. Vous ne savez pas pourquoi Windows Explorer ne demande pas l'autorisation ici pour une opération de suppression nécessitant des droits d'administrateur via cmd.