首页 > 解决方案 > Copy-Items:多次复制同一个文件夹

问题描述

我尝试复制 1 年前最后一次访问的文件和文件夹,这是我的脚本:

$Source = "\\UNC\Path\Folder\"
$Dest = "\\UNC\Path2\Folder\1"

$Get = Get-ChildItem $Source -Recurse | where {
    $_.LastAccessTime -ge (Get-Date).AddMonths(-12).ToString("yyyy-MM-dd")
} 
$Get | Copy-Item -Destination $Dest -Recurse 

该脚本有效,除了它多次复制文件和文件夹。

例如,它将复制\\UNC\Path\Folder\a\b\File1.txt到两者:

请注意,它会跳过调用的文件夹1并将其直接放在Folder.

现在File1.txt已经复制了两次,它是同一个文件,只是目标不同。地点。

我已经用谷歌搜索并搜索了这个论坛,但我没有找到任何东西。知道它可能是什么吗?

标签: powershellcopy-item

解决方案


我按照@TessellatingHeckler 的建议使用了 RoboCopy,效果很好!

Robocopy.exe \\Source\folder\Folder1 \\dest\folder\folder\1 /MAXLAD:365 /e /copyall /log:C:\Logs\log.txt

Robocopy 来源:https ://social.technet.microsoft.com/wiki/contents/articles/1073.robocopy-and-a-few-examples.aspx#Copy_all_content_including_empty_directory

/maxlad:指定最大的最后访问日期(不包括自 N 以来未使用的文件)。

/minlad:指定最小的最后访问日期(不包括自 N 以来使用的文件) 如果 N 小于 1900,则 N 指定天数。否则,N 指定格式为 YYYYMMDD 的日期


推荐阅读