21

我们其中一个解决方案的构建后任务使用 xcopy 将文件移动到构建工件的公共目录中。出于某种原因,在我的计算机上(以及我测试的 VM 上),xcopy 失败并显示“拒绝访问”。这是我为尝试隔离问题所做的工作:

  • 我尝试了普通副本;这行得通。
  • 我仔细检查了所有有问题的文件都不是只读的。
  • 我检查了源文件夹和目标文件夹的权限;我对两者都有完全的控制权。
  • 我尝试从命令行调用 xcopy,以防 VS 构建过程锁定了文件。
  • 我使用 Unlocker 和 Process Explorer 确定源文件上没有锁。

除了涉及计算机的偏执阴谋论来抓我之外,我错过了什么?这发生在我的开发机器和干净的 VM 上,但不会发生在项目中的其他任何人身上。

4

6 回答 6

22

/r = 使用此选项覆盖目标中的只读文件。如果您在要覆盖目标中的只读文件时不使用此选项,系统将提示您“拒绝访问”消息,并且 xcopy 命令将停止运行。

这是我对这个错误的解决方案。

来源

于 2014-07-23T14:17:35.860 回答
18

问题解决了; 有两块拼图。

/O 开关需要在 Vista 上提升。此外,我注意到 xcopy 在 Vista 中已被弃用,取而代之的是 robocopy。现在我正在和我们的构建工程师讨论这个问题。

于 2009-03-18T19:48:13.080 回答
6

您需要以管理员身份运行 XCOPY,没有办法解决这个问题。

如果您不想以管理员身份运行副本,则必须改用ROBOCOPY

但是请注意,使用 ROBOCOPY 时使用该/COPYALL开关非常诱人,该开关也会复制审核信息并需要“管理审核用户权限”,这再次邀请您以管理员身份运行作为快速解决方案。如果您不想以管理员身份运行副本,请不要使用/COPYALL/Copy:DATSOU)开关。而是使用/Copy:DATSO, 因为 U 代表审计。

另请注意,如果您从 NTFS 复制到 FAT 文件系统,则无法“将 NTFS 安全性复制到目标目录/文件”。

于 2015-05-12T00:29:40.267 回答
1

通常发生这种情况是因为有另一个进程锁定了文件。我敢打赌,您的机器与其他机器具有不同数量的内核/不同的速度。尝试插入一些睡眠,看看它是否能解决问题。

于 2009-03-18T18:13:17.723 回答
0

如果您可以在 Windows 资源管理器中删除该文件,请尝试使用提升的命令提示符。不知道为什么 Windows 资源管理器不在这里请求权限,以通过 cmd 进行需要管理员权限的删除操作。

于 2013-12-05T21:50:36.393 回答
0

如果要将文件复制到 IIS 文件夹,则需要以管理员身份运行批处理文件。

于 2018-11-02T06:05:43.193 回答