我需要根据文件的年龄将文件从一个目录复制到另一个位置。我还需要保留目录结构。
此代码只能复制符合条件的文件,但不保留目录结构:
$ListDate = Get-Date "12/6/2013 11:08 AM"
$ActiveDate = $ListDate.AddYears(-7)
Get-ChildItem -path "T:\ProductionServices" -recurse | where-object {$_.lastwritetime -le $ActiveDate -and -not $_.psiscontainer} | Copy-item -destination "T:\TECH\CopyOfDeleteFile"
我已经在这方面苦苦挣扎了一个多星期,我已经尝试了我在这里和互联网上看到的所有建议。我只需要一点点推动就能弄清楚我做错了什么。
答案 0 :(得分:2)
这是robocopy比PowerShell更好的情况之一(或者使用带有 PowerShell的robocopy )。虽然使用robocopy,但你无法得到解决方案(我认为)
robocopy t:\Productionservices t:\tech\copyofdeletefile /E /MINAGE:20061206
或者,如果您想将它与PowerShell一起使用来进行日期数学运算:
$ListDate = Get-Date "12/6/2013 11:08 AM";
$ActiveDate = get-date $($ListDate.AddYears(-7)) -f "yyyyMMdd";
robocopy t:\Productionservices t:\tech\copyofdeletefile /E /MINAGE:$ActiveDate;
您也可以使用/COPY:DAT /DCOPY:T
切换到preserve all attributes & timestamps。