Xcopy不会复制所有文件

时间:2014-06-30 07:36:54

标签: batch-file

我为我们的部门编写了一个工具,用于从Atlassian数据源生成协议 因为在某些情况下,当从公司的netdrive启动时该工具不起作用,一位同事编写了以下批处理文件,只需在本地复制相关文件,从而为所有人创建一个工作程序。

mkdir C:\QuickProtocol\
mkdir C:\QuickProtocol\Templates\
mkdir C:\QuickProtocol\In\
mkdir C:\QuickProtocol\Out\
mkdir C:\QuickProtocol\Templates\Protokoll-Dateien\

XCOPY \\*NetDrivePath*\QuickProtocol.exe  C:\QuickProtocol\ /y 
XCOPY \\*NetDrivePath*\QuickProtocol.pdb  C:\QuickProtocol\ /d /y 
XCOPY \\*NetDrivePath*\Languages.xml      C:\QuickProtocol\ /d /y 
XCOPY \\*NetDrivePath*\PrimeCore.dll      C:\QuickProtocol\ /d /y 
XCOPY \\*NetDrivePath*\Templates          C:\QuickProtocol\Templates\ /d /y /s 

但现在一位同事改变了部门,但仍然可以访问netdrive上的文件,再次尝试了批处理文件。
奇怪的是,在他的情况下,以及其他一些向他报告的同事的情况下,批处理文件只复制了模板文件夹并创建了上面命名的目录。
这可能是什么原因?

3 个答案:

答案 0 :(得分:2)

复制文件失败的原因可能是缺少读取文件内容的权限。

Microsoft文章Permissions for files and folders详细说明了NTFS驱动器的可能权限。

用户可能只有遍历文件夹/列表文件夹权限,这意味着他们可以查看文件夹中的子文件夹和文件,也可以浏览子文件夹。换句话说,用户有权列出目录树。

但如果用户没有额外的读取数据权限,则无法打开文件进行阅读。在这种情况下,copyxcopy无法复制文件,因为无权读取文件数据。

由于同样的原因,直接从共享网络文件夹运行应用程序可能会失败。用户具有遍历文件夹/列表文件夹/执行文件的权限,但没有读取数据的权限,因此应用程序无法读取目录中的文件。

我建议其中一位遇到问题的用户应尝试直接从共享网络文件夹中打开Languages.xmlNotepad中的文件Internet Explorer。如果用户没有所需的读取数据权限,那么这些应用程序会显示错误消息。

在命令Pause底部附加批处理文件也很有帮助,如果该行存在,则将批处理文件顶部的@echo off更改为@echo on,并且然后执行批处理文件。现在,用户可以查看执行的命令以及批处理文件执行期间发生的所有错误。

答案 1 :(得分:0)

感谢所有的答案,在我的案例中,将Xcopy更改为Copy,因为Copys帮助了少数单个文件,至少看起来如此。希望它保持这种方式^^

答案 2 :(得分:0)

由于权限错误,我使用robocopy代替copyxcopy

更多信息:

Exclude folders in batch-copy-script