【发布时间】:2017-11-06 18:20:42
【问题描述】:
我为实习编写了一个简单的脚本,它在提供的目录中搜索并删除任何早于指定天数的文件。我今天所有的空闲时间都在试图收紧它。到目前为止,这是我所得到的:
function delOld($dir, $numDays){
$timespan = new-timespan -days $numDays
$curTime = get-date
get-childItem $dir -Recurse -file |
where-object {(($curTime)-($_.LastWriteTime)) -gt $timespan} |
remove-Item -whatif
}
这里是一个函数调用的例子:
delOld -dir "C:\Users\me\Desktop\psproject" -numDays 5
抱歉阅读困难,我发现将操作压缩到一行比每次迭代都将它们重新分配给易读的变量更有效。 remove-item 目前是 whatif'd 用于测试目的。我知道在这一点上,我可能无法加快速度,但是,我在超过 TB 的文件上运行它,所以每个操作都很重要。
提前感谢您提供的任何建议!
【问题讨论】:
-
这是我眼中的最快速度。我真的不知道除了设计它来解雇工作之外,它还能更快吗?但是这样重新设计无论如何都会抵消速度的提高
-
你试过日志解析器吗?
-
99% 的时间都花在
Get-ChildItem读取物理磁盘上,因此如果有任何显着加快速度的方法,它将使用Everything's API 直接读取磁盘的 MFT(时间/日期索引应该启用)搜索查询可能只需要几秒钟! -
追秒:优化文件枚举youtube.com/…
标签: windows powershell powershell-4.0