复制项目缓慢 - 40 分钟过滤和复制 5500 个文件?



我最近写了一个很小的脚本来帮助我从包含许多不同子文件夹和文件的较大目录中拉出包含大量小txt文件的子文件夹。

总而言之,我将包含 ~17GB 的文件夹(~100 个包含 ~5,500 个文件的文件夹)从外部硬盘复制到我的本地驱动器。连接是 USB 2.0。

这花了~40分钟!为什么这花了这么长时间?

开销更多地与我的代码有关,还是与过时的数据连接缓慢有关?我将来可以采取哪些捷径?机器人复制本质上比复制项目更快吗?如果是这样,为什么?

$mainDir = Get-ChildItem 'E:Some Big Directory' -Recurse | Where {$_.Mode -match 'd'} | % {$_.FullName}
ForEach($dir in $mainDir){
if($dir.ToString() -match 'SubfoldersIWant'){
Copy-Item -Path $($dir + 'TheActualFolderIWant*') -Destination 'C:somwhere' -Recurse
}
}

文件夹结构大致如下(大小向下):

一些大目录 -子文件夹IWant1 -subFolderIDontwant -随机.txt -子文件夹我 -*。.txt -兰多.jpg -我不想要这个文件夹 -随机垃圾 -子文件夹IWant2 -subFolderIDontwant -随机.txt -子文件夹我 -*。.txt -兰多.jpg -也不要这个.jpg

您可以使用这一行:

Get-ChildItem 'E:Some Big Directory' -Directory -Recurse | Where {$_.FullName -match 'SubfoldersIWant'} | Copy-Item -Destination 'C:somwhere' -Recurse

这样,过滤速度要快得多。但老实说,它不太可能产生很大的影响,因为您的瓶颈似乎是数据传输速率。

最新更新