我为我们部门编写了一个工具,可以从 Atlassian 数据源生成协议。
因为在某些情况下,该工具从公司的网络驱动器启动时无法工作,所以一位同事编写了以下批处理文件,只需将相关文件复制到本地,这就会为所有人提供一个工作程序。
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
但是现在一位同事换了部门,但仍然可以访问网络驱动器上的文件,再次尝试了批处理文件。
奇怪的是,在他的情况以及向他报告的其他一些同事的情况下,批处理文件仅复制模板文件夹并创建上面指定的目录。
这可能是什么原因?
复制文件失败的原因可能是缺少读取文件内容的权限。
有关“文件和文件夹的权限”的 Microsoft 文档详细解释了 NTFS 驱动器上可能的权限。 Microsoft 文档复制和移动文件和文件夹时如何处理权限描述了 Windows 资源管理器如何在不同情况下处理文件和文件夹权限。 用户可能只有
遍历文件夹/列出文件夹权限,这意味着他们可以查看文件夹中的子文件夹和文件,也可以浏览子文件夹。换句话说,用户拥有列出目录树的权限。 但如果用户没有额外的
读取数据权限,则无法打开文件进行读取。在这种情况下,copy
和
xcopy
也无法复制文件,因为没有读取文件数据的权限。由于同样的原因,直接从共享网络文件夹运行应用程序可能会失败。用户有遍历文件夹/列出文件夹/执行文件的权限,但没有读取数据的权限,因此应用程序无法读取目录中的文件。 我建议遇到问题的用户之一应该尝试直接从共享网络文件夹打开
Languages.xml
中的文件
Notepad
或Internet Explorer
中的文件。如果用户没有所需的读取数据权限,这些应用程序会显示错误消息。 将命令
Pause
附加到批处理文件底部也很有帮助,如果该行存在,则将批处理文件顶部的
@echo off
更改为 @echo on
,然后执行批处理文件。现在用户可以查看执行的命令以及批处理文件执行期间发生的所有错误。Xcopy
更改为
Copy
对于少数单个文件副本有所帮助,至少看起来是这样。希望能一直这样^^我知道某些原因可能会导致: 1.目录字符串太长,但我的不超过100; 2.隐藏目录默认不执行复制,除非使用
/H
。 我使用这个参数,它不是隐藏目录。 3.我已经检查了目录权限
所以我很好奇为什么。一些感受: xcopy没有问题日志,我不知道发生了什么事,为什么他处理不了。
最后:
我使用 robocopy 而不是 xcopy