我使用的是 Windows 7。robocopy 开关 DCOPY:T 可以在命令中使用(我的意思是没有参数错误)
robocopy C:\TEST F:\test /E /MIR /COPYALL /DCOPY:T
但是,除了下没有其他文件夹的文件夹外,文件夹时间戳不会被保留,即,所有下有子文件夹的文件夹都不会保留时间戳。这是怎么回事?
我以提升的权限运行了该命令。
答案1
我记得在使用以前版本的 Robocopy.exe 时看到过您描述的问题(或类似问题)(它也可能出现在 Windows XP 上,而不是我当前的 Windows 7 上)。
这种行为是经过设计的,或者至少是预期的。
问题是由于在旅行中遇到文件和文件夹(以及时间戳)时被复制而引起的向下目錄樹。
对于任何特定文件夹,我们将其称为文件夹“A”:
- 首先,创建文件夹 A(如果有的话,显然还有子文件),然后将时间戳设置为与源文件夹相同。
- 如果文件夹 A 没有子文件夹,Robocopy 将继续处理文件夹 A 的下一个同级文件夹,或返回文件夹 A 的父文件夹。文件夹 A 的时间戳保持正确设置。
- 如果文件夹 A 有子文件夹,则会在文件夹 A 中创建子文件夹,这会导致文件夹 A 的时间戳被修改。
结果是(如果 A 有子文件夹),第一次访问时,A 的时间戳会是错误的。下次访问时,不会创建新的子文件夹,因此 A 的时间戳仍然正确。
正如我所说,我目前正在 Windows 7 Home Premium x64 上使用 Robocopy 版本 5.1.10.1027 (XP027)。当我尝试您描述的这个操作时,我发现所有文件夹(无论是否为空)在第一次传递后都有正确的时间戳,因此不需要第二次传递。可能,这意味着这个较新版本的 Robocopy (XP027) 会等到文件夹中的所有子文件/文件夹都完成后再复制该文件夹的时间戳。
答案2
我能够将其追溯到版本问题。在我的 Windows 7 工作站上,我有一个 robocopy 5.1.10.1027,它不支持 /dcopy 开关。在我的 Windows Server 2012 上,版本是 6.3.9600.16384,它支持 /dcopy。看起来你仍然必须运行两个不同的命令。