使用教程

当前位置:首页>使用教程

几千个文件怎么平均分配到多个文件夹?

时间:2026-08-11   访问量:1006

几千个素材要分给几个人、一批图片要拆成多份分批上传、数据集要按比例分成训练集和验证集——这类"把一堆文件平均分到多个文件夹"的活,手工拖拽能做但极慢且容易错。这篇讲三种做法。

一、什么场景会需要平均分配

这些场景有两个共同要求:不能重复、不能遗漏。手工操作最容易在这两点上出错。

二、方法一:手工拖拽

文件少的时候(几十个)这样做没问题:

  1. 新建好目标文件夹
  2. 在源文件夹里点第一个文件,按住 Shift 点第 100 个,全选这一段
  3. 剪切,粘贴到第一个目标文件夹
  4. 回来重复

文件一多就废了,原因不是慢,是容易错:

三、方法二:PowerShell 脚本(免费)

Windows 自带 PowerShell,可以直接写脚本处理。

按"每个文件夹 N 个"分配

$src = "C:源文件夹"
$dst = "C:目标文件夹"
$perFolder = 100

$files = Get-ChildItem -Path $src -File
$i = 0
$folderIndex = 1
$target = ""

foreach ($f in $files) {
    if ($i % $perFolder -eq 0) {
        $target = Join-Path $dst ("part_" + $folderIndex)
        New-Item -ItemType Directory -Force -Path $target | Out-Null
        $folderIndex++
    }
    Copy-Item $f.FullName -Destination $target
    $i++
}
Write-Host "完成,共处理 $i 个文件"

按"总共分成 M 个文件夹"分配

$src = "C:源文件夹"
$dst = "C:目标文件夹"
$folderCount = 5

$files = Get-ChildItem -Path $src -File
$idx = 0
foreach ($f in $files) {
    $n = ($idx % $folderCount) + 1
    $target = Join-Path $dst ("part_" + $n)
    New-Item -ItemType Directory -Force -Path $target | Out-Null
    Copy-Item $f.FullName -Destination $target
    $idx++
}

这种写法是轮流分配(第1个进part_1、第2个进part_2……),余数会自动摊到前面几个文件夹,分得最均匀。

随机分配

数据集拆分这类场景需要打乱顺序,加一行排序即可:

$files = Get-ChildItem -Path $src -File | Sort-Object { Get-Random }

只分配指定类型

$files = Get-ChildItem -Path $src -File | Where-Object { $_.Extension -in ".jpg", ".png" }

脚本方案的局限

上面几段脚本都能用,但实际跑一批重要文件之前,要知道它们的短板:

四、方法三:用工具处理

睿君文件平均分配工具就是把上面这些规则做成了界面选项:

  1. 选源文件夹
  2. 选目标父文件夹
  3. 设规则——每夹 N 个 / 建 M 个夹 / 按类型筛选(可多选)
  4. 选顺序还是随机、复制还是移动
  5. 开始,完成后查看结果结构

几个脚本里比较难做的点它是支持的:

五、三种方法怎么选

对比项手工拖拽PowerShell专用工具
费用免费免费付费
文件量几十个以内不限不限
按类型筛选手动挑改代码勾选
随机分配做不到加一行切换选项
双规则叠加做不到要自己写逻辑支持
重名保护有提示默认覆盖有处理
出错代价高(尤其移动模式)

六、不管用哪种方法,这两条都要做到

第一:先用复制,不要直接用移动。复制完核对无误,再决定要不要删源文件。移动模式虽然快、省空间,但出错就是不可逆的。重要文件尤其如此。

第二:分完一定要核对总数。把各个目标文件夹的文件数加起来,跟源文件夹对比。PowerShell 里一行就能查:

Get-ChildItem -Path "C:目标文件夹" -Recurse -File | Measure-Object | Select-Object Count

数字对不上,说明有重名覆盖或漏分,趁早发现。

七、常见问题

Q:文件数除不尽怎么办?比如 1003 个文件分 5 份?
轮流分配的方式会自动把余数摊到前面几个文件夹,结果是 3 个文件夹 201 个、2 个文件夹 200 个,这是最均匀的分法。

Q:源文件夹里有子文件夹,会一起处理吗?
上面的脚本默认只处理当前层级。要包含子目录得加 -Recurse,但那样很容易出现不同子目录下的同名文件互相覆盖,加之前先确认没有重名。

Q:能不能按文件大小平均,而不是按数量?
按体积均分是另一个问题(本质上是装箱问题),上面的脚本做不到,需要先读取每个文件大小再分配。多数场景按数量分就够了。

Q:分完想还原怎么办?
用复制模式的话,源文件夹原封不动,直接删掉目标文件夹即可。这也是建议优先用复制的原因。


相关阅读:视频怎么批量添加时间戳和星期?3 种方法实测对比

上一篇:视频时间戳的格式、位置和样式怎么调?参数详解

下一篇:怎么用 Excel 批量给图片加不同文字?含 Photoshop 数据组方法

发表评论:

评论记录:

未查询到任何数据!

添加QQ

86998867
微信同号

添加QQ

微信扫一扫

微信联系
返回顶部