我正在使用从源到目的地的Robocopy。
以下内容将移动所有文件。
Step 1: robocopy c:\Source C:\Destination /MIR
现在当我在步骤中执行第二个命令时,应使用/ MIR参数将2019年1月1日之前的任何内容从目标位置删除,但这不会发生(2019年1月之后的文件仍保留在文件夹中,而不是使用/ MIR删除命令)。我该如何解决这个问题?在20190101之前删除任何内容?
Step 2: robocopy c:\Source C:\Destination /MIR /maxage:19000101 /minage:20190101"
答案 0 :(得分:1)
这似乎是奇怪的行为,因为您可能会认为您要做的事情比2019年1月1日早,并且使用/MIR
开关,或更具体地说是使用/PURGE /E
开关,以删除多余的目录。
此操作不起作用的原因是,即使/MINAGE
命令按预期运行,/MIR
开关也仅影响选择复制的文件
说我们有2个文件,比1月1日早1个,另外1个新。当我们运行标准的\MIR
命令时:
Robocopy.exe C:\Source C:\Destination /MIR
两个文件均按预期复制。
2 files Copied
如果我们向目标添加一个额外的文件,然后重新运行:
Robocopy.exe C:\Source C:\Destination /MIR
我们得到了预期的删除多余文件的信息:
2 files Skipped
1 files Extras
然后我们添加/MINAGE
并运行:
Robocopy.exe C:\Source C:\Destination /MIR /MAXAGE:20190101
我们将看到:
2 files Skipped
为了更好地说明正在发生的事情以及为什么“跳过”文件,我们添加另一个参数,包括“跳过\IS
”
Robocopy.exe C:\Source C:\Destination /MIR /IS /MINAGE:20190101
我们得到:
1 files Copied
1 files Skipped
这意味着\MINAGE
过滤掉了我们要复制的内容。如果我们清除目录并重新运行,则可以更好地了解发生了什么:
Remove-Item C:\Destination -Force
Robocopy.exe C:\Source C:\Destination /MIR /MINAGE:20190101
我们得到:
1 files Copied
1 files Skipped
它复制了较旧文件,而不是较新文件。这意味着当遍历源文件中的文件时,它使用/MINAGE
参数仅找出需要复制的什么文件,而不是哪些文件我需要删除。
此行为的原因是因为/MINAGE
用于具有慢速网络链接的大型目录或较小的目标计算机,我们只对复制较新的文件感兴趣,而不一定需要全部文件。
要突出显示“复制而不是删除”,如果我们添加2个额外的文件,其中一个较旧,一个较新,然后使用/MINAGE
重新运行,并包括相同的/IS
开关以进行说明:
Robocopy.exe C:\Source C:\Destination /MIR /IS /MINAGE:20190101
我们得到:
1 files Copied
1 files Skipped
2 files Extras
这突显了/MIR
的意思是...嗯... 镜像。此处的其他参数只是告诉它复制的内容。
/MINAGE
,并复制了相同的文件(/IS
)。/MINAGE
,并从副本中跳过了较旧的文件。/MIR
,并删除了原本不应该存在的Extra文件。无论Extra文件的使用期限如何。简单的解决方案是仅复制所有内容。从一个空目录开始,仅复制早于2019年1月1日的文件:
Remove-Item C:\Destination -Force
Robocopy.exe C:\Source C:\Destination /E /MINAGE:20190101