为大数据提取文件信息的方法

我试图recursion地提取一些文件信息在我的文件服务器。 我能够在我自己的笔记本电脑上运行下面的命令。 当我在我的文件服务器上运行它们时,它们将通过4TB的数据,运行或停留数小时。

当我使用程序调用TreeSize来查看目录大小时,它会遍历所有4TB的数据并在不到10分钟的时间内显示用法。

我的问题是,有没有办法使用cmd或powershell提取4TB的数据中的文件信息,并像TreeSize程序一样快?

forfiles /s /d -2/21/2017 /c "cmd /c echo @fdate, @ftime, @path" > ./myfile.csv dir /q /s /o:d > ./myfile2.txt 

你正在为每个文件执行一个新的cmd,这是非常昂贵的。 这不是新的 :

在FORFILES中使用CMD.exe会有一些缺点,FORFILES会处理每个文件都会创build一个新的进程,所以如果循环1000个文件,那么将会打开并closures1000个CMD.exe副本。影响性能。

相比之下, TreeSize等大小工具已经针对速度进行了优化 :

TreeSize Free可以在MFT(主文件表)上工作,并达到极高的扫描速度。 扫描操作在一个线程中运行,所以当TreeSize Free在后台工作时,您几乎可以立即看到结果。

不要调用更多的可执行文件,你可以做得更好。 PowerShell在这方面很出色,甚至在我的新手级别上也是如此:

 Get-ChildItem D:\path\ -recurse | Where-Object {$_.CreationTime -and $_.CreationTime -lt "2/21/2017" } | Select-Object FullName, LastWriteTime | Export-Csv myfile.csv 

所需的输出格式和其他文件是读者的练习。