将特定数量的文件从大量文件中移到文件夹中

我在一个文件夹(源)中有一百万个文件。 我想创build一个新的文件夹,移动5K文件,并重复,直到源中的所有文件被移动到单独的目标文件夹。 最终的结果将是200个新文件夹,每个5K文件。 我想在Windows中最好这样做。

文件夹名称可以随机创build,文件可以从池中随机选取。

更新1:生成的200个文件夹将直接位于根目录下,因此不需要目标文件夹结构。

为了准确地回答你想要的内容,这将把5000个文件移动到文件夹中,从1开始并继续,直到文件移出。 您的上一个文件夹最有可能less于5,000个文件。

在PowerShell中,未经testing,所以YMMV。

 $filesperfolder = 5000 $sourcePath = "C:\Temp" $destPath = "C:\Temp\Sorted" $i = 0; $folderNum = 1; Get-ChildItem "$sourcePath\*.pdf" | % { New-Item -Path ($destPath + "\" + $folderNum) -Type Directory -Force Move-Item $_ ($destPath + "\" + $folderNum); $i++; if ($i -eq $filesperfolder){ $folderNum++; $i = 0 ; } } 

这不符合你所要求的内容,但是处理这个问题的一个常见方法是根据文件名中的第一个字符将文件分成两个更深的文件。

这不会均匀分配这些文件,但是如果这些文件是使用GUID命名的,那么每个级别的文件夹数量将有所限制。

在Powershell中,将*.pdfc:\temp c:\temp\sortedc:\temp\sorted

 $sourcePath = "C:\Temp" $destPath = "C:\Temp\Sorted" Get-ChildItem "$folderPath\*.PDF" | %{ $newFolder = $destPath + ("\" + $_.Name.SubString(0,2) + "\" + $_.Name.SubString(3,2)).ToUpper(); New-Item -Path $newFolder -Type Directory -Force Move-Item $_ $newFolder }