Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 将文件从一个目录复制到另一个目录_Powershell - Fatal编程技术网

Powershell 将文件从一个目录复制到另一个目录

Powershell 将文件从一个目录复制到另一个目录,powershell,Powershell,我需要根据文件的年代,将文件从一个目录复制到另一个位置。我还需要保持目录结构 此代码仅复制符合条件的文件,但不保留目录结构: $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 -

我需要根据文件的年代,将文件从一个目录复制到另一个位置。我还需要保持目录结构

此代码仅复制符合条件的文件,但不保留目录结构:

$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"

我已经为此挣扎了一个多星期,我尝试了我在这里和互联网上看到的所有建议。我只需要一点推动就可以找出我做错了什么。

这是比PowerShell(或者,将robocopy与PowerShell结合使用)更好的情况之一。虽然有了robocopy,但你无法在一分钟内获得解决方案(我认为)

或者,如果要将其与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
开关。

您应该向超级用户提问。@dc2这不是编程问题。可能是服务器管理的服务器故障?但不是这样,好吧。。。阅读你的链接。。。现在我们开始…@dc2,如果你觉得它应该在SU上,投票关闭并选择合适的选项。这个解决方案在一定程度上确实有效。它将修改后的日期更改为当前日期,而不是保留原始日期。我最初的尝试虽然没有保留目录结构,但保留了最初修改的日期。是否可以保留原始修改日期?要使用Robocopy保留属性和时间戳,请使用以下开关(除上述开关外):
/COPY:DAT/DCOPY:T
。看到我很抱歉!!!我发现它更改了文件夹的修改日期,但文件保留了原始日期。我将尝试alrocs解决方案来保持目录日期。我已使用其他开关更新了我的答案。如果这解决了您的问题,请将答案标记为已接受。
$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;