为什么 RoboCopy 会创建一个隐藏的系统文件夹?

为什么 RoboCopy 会创建一个隐藏的系统文件夹?

我想尝试使用 RoboCopy 将文件夹的内容镜像到另一个硬盘上。看起来效果不错。但出于某种原因,要查看目标文件夹,我必须同时启用显示隐藏的文件、文件夹和驱动器并禁用隐藏受保护的操作系统文件。为什么会这样?源文件夹和目标文件夹最初都是可见的普通目录。当我打开该目标文件夹的属性时,属性甚至被禁用。这是怎么回事?

是因为我在管理员命令提示符中运行它吗?还是我选择的修饰符有问题?还是 robocopy 真的就是这样工作的?

robocopy E: I:\E /COPYALL /E /R:0 /MIR /B /ETA

更新:尝试将另一个驱动器复制到另一个文件夹,结果发生了同样的事情。但是当我尝试将文件夹复制到另一个文件夹时,目标文件夹保持正常。可能是因为我复制了一个驱动器?如果是这样,我该如何防止这种情况发生?因为我确实想复制整个驱动器...

答案1

在我的系统(Vista)上,powershell 显示 c:\ 驱动器同时设置了隐藏属性和系统属性。

    PS C:\Users\michael.DOMAIN> Get-Item c:\


    Directory:


Mode           LastWriteTime       Length Name
----           -------------       ------ ----
d--hs     8/18/2009 12:19 PM        <DIR> C:\

复制文件后,您可以使用 attrib 来修复它们。查看 attrib /? 了解详细信息。

答案2

它与从磁盘根目录复制隐藏/系统系统卷信息有关 - 如果复制,目标目录将获得相同的属性系统/隐藏。

复制之前创建目录没有帮助,因为 robocopy 也会隐藏它。

添加/A-:SH忽略系统文件的开关。

更多信息请参见此处Microsoft Technet 讨论

答案3

我也遇到过这个问题。似乎当源目录是驱动器的根目录时,就会出现这个隐藏文件夹,例如。 D:\F:\。这些文件夹将包含系统和隐藏属性,并且作为源根文件夹,无法通过命令删除它attrib -s -h

在这个例子中,F:\G:\就是目的地。

您可以在 PowerShell 中查看属性。您将看到d--hs目录、隐藏和系统的模式。尝试以下get-item命令C:\> Get-Item F:\

如果文件夹存在,Robocopy 应该不会将其创建为隐藏文件夹。我读过几篇文章,说使用/CREATE就可以解决问题,或者您可以提前手动创建文件夹。我必须做进一步的测试以及其他组合才能完全验证这一点。

否则,您可以attrib -h -s G:\Destination_Folder在复制后执行删除系统和隐藏属性。

答案4

如果您不介意attrib事后运行,请使用 M Aguilar 的解决方案。另一个解决方案是预先创建目标目录:

  1. mkdir I:\E
  2. robocopy E: I:\E /COPYALL /E /R:0 /MIR /B /ETA

相关内容