Что заставляет xcopy сказать мне, что доступ запрещен? - PullRequest
16 голосов
/ 18 марта 2009

Задача пост-сборки для одного из наших решений использует xcopy для перемещения файлов в общий каталог для артефактов сборки. По какой-то причине на моем компьютере (и на проверенной мною виртуальной машине) xcopy завершается с ошибкой «Отказано в доступе». Вот что я сделал, чтобы попытаться изолировать проблемы:

  • Я попробовал нормальную копию; это работает.
  • Я дважды проверил, что ни один из рассматриваемых файлов не был доступен только для чтения.
  • Я проверил разрешения как для исходной, так и для целевой папки; У меня есть полный контроль над обоими.
  • Я попытался вызвать xcopy из командной строки, если процесс сборки VS заблокировал файл.
  • Я использовал Unlocker и Process Explorer, чтобы определить, что в исходном файле не было блокировок.

Что я пропустил, кроме параноидальных теорий заговора с участием компьютеров, чтобы вытащить меня? Это происходит на моей машине разработчика и чистой виртуальной машине, но не происходит с кем-либо еще в проекте.

Ответы [ 6 ]

17 голосов
/ 18 марта 2009

Проблема решена; есть две части головоломки.

Переключатель / O требует повышения в Vista. Кроме того, я заметил, что xcopy устарел в Vista в пользу robocopy. Сейчас я говорю с нашими инженерами по сборке об этом.

13 голосов
/ 23 июля 2014

/ r = Используйте эту опцию для перезаписи файлов только для чтения в месте назначения. Если Вы не используете эту опцию, когда хотите перезаписать файл только для чтения в пункте назначения вы получите сообщение «Отказано в доступе» и команда xcopy прекратит работу.

Это мое разрешение этой ошибки.

Источник

3 голосов
/ 12 мая 2015

Вам нужно запустить XCOPY с правами администратора, пути к этому нет.

Если вы не хотите запускать свою копию с правами администратора, вы должны использовать ROBOCOPY .

Обратите внимание, однако, что с ROBOCOPY очень заманчиво использовать переключатель /COPYALL, который также копирует информацию аудита и требует «Управление правами аудита пользователя», что снова предлагает вам работать от имени администратора в качестве быстрого решения. Если вы не хотите запускать копию как администратор, то не используйте /COPYALL (или /Copy:DATSOU). Вместо этого используйте /Copy:DATSO, поскольку U обозначает изменение.

Также обратите внимание, что если вы копируете из NTFS в файловую систему FAT, вы не сможете «Копировать безопасность NTFS в каталог / файл назначения».

2 голосов
/ 18 марта 2009

Обычно это происходит потому, что есть другой процесс, блокирующий файл. Бьюсь об заклад, ваша машина имеет другое количество ядер / скорость отличается от других. Попробуйте вставить несколько снов, чтобы увидеть, решит ли это проблему.

0 голосов
/ 02 ноября 2018

если вы копируете файл в папку IIS, вам нужно запустить командный файл от имени администратора.

0 голосов
/ 06 декабря 2013

Если вы можете удалить файл в проводнике Windows, попробуйте использовать командную строку с повышенными привилегиями. Не уверен, почему Windows Explorer не запрашивает здесь разрешение на операцию удаления, для которой нужны права администратора через cmd.

...