错误'共享违规'Xcopy错误消息

问题描述 投票:12回答:7

我正在运行批处理脚本(在计算机A上)。该脚本将几个文件从另一台计算机(计算机B)复制到计算机A.当运行批处理脚本时,它报告由于“共享冲突”而无法将计算机B中的某些文件复制到其自己的目录中。

通过阅读其他stackoverflow页面,我看到当另一个程序锁定文件时(另一个程序当前正在使用/访问该文件),会发生这种情况。但是,我可以进入计算机B并删除计算机A声称被锁定的文件(由于共享违规)。

我可以想象的唯一可能是发生的事情是计算机A上的批处理脚本在某个早期命令中锁定文件(不知何故),这个早期的命令是锁定文件的?但我的批处理脚本命令是串行运行的,除非另有说明。

以前有没有人遇到这个问题?该脚本将在一两周前成功复制而不会共享冲突。脚本中没有发生任何更改。

windows batch-file sharing xcopy
7个回答
27
投票

经过多次试验和错误,我能够确定为什么我会收到共享的违规行为

我正在将文件从计算机B复制到计算机A.

我认为发生共享违规是因为计算机B不允许我复制这些文件[存储在其硬盘上]。

实际上,计算机A上的目录(计算机复制到)有我无法写的文件。这就是我收到共享违规行为的原因。

计算机A目录中的一个文件是一个可执行的任务,我认为它已被杀死(taskkill)。但是,这个可执行文件在taskkill中被忽略了(实际上由于某种原因没有在任务管理器中列出)进程,并且该程序仍在运行(文件正在使用中)。因此,当我尝试覆盖该文件时,xcopy被拒绝访问以覆盖此文件/可执行文件,从而导致共享冲突。

我的印象是,如果计算机B上的文件不允许发生复制,则只会在xcopy期间发生共享冲突。


6
投票

大多数情况下,当您遇到此问题时,是因为另一个可执行程序(exe)以某种方式使用您要复制的文件。只需使用任务管理器终止程序,副本就可以运行。


2
投票

我在批处理文件中遇到了与xcopy相同的问题,并发现导致共享冲突的文件设置了只读属性。删除只读属性允许复制文件。

我应该注意到我已经使用带有xcopy的/ R开关来允许覆盖只读文件。我还发现该文件已经在目标文件夹中,并且设置了只读属性,并且在成功进行xcopied之后,目标文件上的Read Only已被重置。我还需要进一步调查。 / K开关可能会阻止这种情况。

另外值得注意的是,我的批处理文件包含一系列xcopy语句。共享冲突导致第一行崩溃,但允许批处理文件继续到后续的xcopy行。由于共享违规消息已从屏幕上滚动,因此错误在相当长的一段时间内未被注意到。即使发生错误,我也可以尝试使用/ C开关继续复制。

我希望这可以帮助其他遇到这个问题的人。


2
投票

有时文件/目录可能暂时不可用/被另一个进程锁定。如果您的批处理程序在此刻尝试复制,则会导致“未知错误/共享违规”。

在这种情况下,使用robocopy而不是“xcopy / copy”可能更相关,因为它不会立即失败,但在失败之前重试几次。


2
投票

/C开关为我解决了这个问题。 Xcopy然后跳过其他程序打开的文件并继续。


1
投票

对我来说,这是在我尝试将war文件复制到tomcat目录时发生的。我一直在检查,确实已经停止了tomcat。问题是我在7zip中打开war文件,因为我正在检查内容。我离开时关闭了7zip和问题。

现在很明显,当发生这种情况时并非如此。


1
投票

我遇到了同样的问题......有问题的文件是excel表。问题的原因是,我想要复制的文件是由我的同事打开的。值得一提的是,我正在将数据从我的工作站复制到共享文件夹。因此xcopy无法覆盖它。


0
投票

如果我以管理员身份运行.BAT文件,我的“拒绝访问”就消失了。

一些ACT!文件由后台SQL保持打开,并为每个文件提供“共享冲突”消息。我杀死了后台SQL进程和复制的文件,没有任何问题。

不确定robocopy是否会起作用;我现在还在使用Xcopy。

© www.soinside.com 2019 - 2024. All rights reserved.