gpt4 book ai didi

powershell - 展平目录结构

转载 作者:行者123 更新时间:2023-12-02 23:41:51 24 4
gpt4 key购买 nike

下面的函数展平目录结构,并根据最后选择的写入日期复制文件。

function mega-copy($srcdir,$destdir,$startdate,$enddate)
{
$files = Get-ChildItem $SrcDir -recurse | Where-Object { $_.LastWriteTime -ge "$startdate" -and $_.LastWriteTime -le "$enddate" -and $_.PSIsContainer -eq $false };
$files|foreach($_)
{
cp $_.Fullname ($destdir+$_.name) -Verbose
}
}

这在较小的目录上非常成功,但是当尝试将其用于具有多个子目录和文件数量从数十万到数千万不等的目录时,它只会停顿下来。我运行了此文件并将其放置24小时,并且没有复制任何文件,也没有在PowerShell控制台窗口中显示任何内容。在这种情况下,大约有2700万个文件。

但是,尽管速度很慢,但简单的批处理文件可以毫无问题地完成这项工作。

最佳答案

一个简单的答案是:使用中间变量会导致文件移动启动的巨大延迟。结合使用

-and $_.PSIsContainer -eq $false

而不是简单地使用-file开关,答案是对脚本进行了一些简单的修改,结果是:
function mega-copy($srcdir,$destdir,$startdate,$enddate)
{
Get-ChildItem $SrcDir -recurse -File | Where-Object { $_.LastWriteTime -ge "$startdate" -and $_.LastWriteTime -le "$enddate" } | foreach($_) {
cp $_.Fullname ($destdir+$_.name) -Verbose
}
}

关于powershell - 展平目录结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39729491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com