我正在使用以下脚本存档 2013 年 1 月 1 日之前的所有内容:
foreach ($i in Get-ChildItem "O:\Projects” -Force -Recurse)
{
if ($i.LastWriteTime -gt ($(Get-Date).AddDays(-649)))
{
robocopy $i.FullName "A:\Operations\Projects" /Z /S /MOVE /MIR
}
}
问题是脚本没有复制精确的目录树。它只是将包含相关文件的文件夹复制到目标目录的根目录。
举例来说,这代表我们的文件夹结构:
- 项目A
- 引用
- QuoteA.pdf(最后修改于 2011 年 6 月)
- 清仓
- CloseoutA.pdf(最后修改于 2011 年 11 月)
- 引用
- 项目 B
- 引用
- QuoteB.pdf(最后修改于 2012 年 10 月)
- 清仓
- CloseoutB.pdf(最后修改于 2013 年 4 月)
- 引用
上述脚本将产生以下目标文件夹:
- 引用
- 引文A.pdf
- 引文B.pdf
- 清仓
- 清仓A.pdf
上面的例子非常简单。有些文件有 8 或 9 个文件夹深。源目录中有近 30,000 个文件夹。我需要在移动过程中保持适用文件的完整路径不变,我该如何实现呢?
答案1
根据以下评论进行编辑:
您可以尝试让 robocopy 决定是否需要移动树中的文件并避免使用 Get-Childitem:
robocopy "O:\Projects" "A:\Operations\Projects" /Z /S /MOVE /MIR /MINAGE:649
答案2
变化到/E!
或者使用额外的 IF那检查为了文件夹你要加上(经过姓名)空的并使用/E从Robocopy,里面这如果!
希望有帮助!:)