【发布时间】:2018-12-11 20:20:56
【问题描述】:
我在使用 FOREACH 循环的 Powershell 复制期间维护文件夹结构时遇到问题,因为父文件夹下的某些文件夹需要 90 天前创建的数据,而其他文件夹需要 180 天。
$Folders_90Days = "C:\Admin\Ripley","C:\Admin\Android","C:\Admin\Bishop"
$Folders_180Days = "C:\Admin\Archer","C:\Admin\Figgis","C:\Admin\Pam"
$Dest = 'D:\Archive_Target'
FOREACH($path in $Folders_90Days){
$files = (Get-ChildItem $path | Where-Object { $_.CreationTime -lt (Get-Date).AddDays(-90)})
ForEACH($file in $Files){
Copy-Item $file.FullName -destination $Dest -Recurse
}
#End ForEach Folders_90Days loop
}
复制运行时,将从源文件夹复制的数据直接复制到目标。
所以本质上Ripley中的数据直接复制到Archive_Target。
如何让它在源文件夹成为目标文件夹的情况下复制?
示例:D:\Archive_Target\Ripley
- 一直保持Source Ripley的文件夹结构?
【问题讨论】:
-
我建议使用 Robocopy 而不是重新发明轮子。
-
您将如何在 Powershell 中使用 Robocopy 来实现这一目标?稍后当所有内容都复制到目的地时,我将使用 PS 将其全部压缩到存档中。
-
首先在 powershell 提示符下输入:
robocopy /?
标签: powershell